Was sind die gängigsten Best Practices für Länge und Datentyp in gemeinsamen Feldern wie:
- Vorname
- Familienname, Nachname
- Adresse
- Geschlechtsverkehr
- Zustand
- Stadt
- Land
- Telefonnummer
usw....
database-design
best-practices
Snow_Mac
quelle
quelle
Antworten:
Ich würde jeder Reihe von universellen Best Practices gegenüber sehr misstrauisch sein, da in den meisten dieser Bereiche der Teufel im Detail steckt. Nur weil die Informationen relativ häufig sind, bedeutet dies nicht, dass Ihre Anwendung die Daten genauso verwendet, wie andere Anwendungen sie verwenden. Das bedeutet, dass Ihr Datenmodell möglicherweise etwas anders sein muss.
STATE
Tabelle und eine Fremdschlüsselbeziehung zwischen dem ErstellenSTATE
undADDRESS
Tabellen. Die Möglichkeit, die gültigen Werte zu identifizieren, impliziert jedoch, dass Sie den Satz gültiger Adressen zumindest auf einen bestimmten Satz von Ländern beschränken. Das ist für viele Websites in Ordnung, aber dann muss man ein bisschen arbeiten, um ein neues Land zu unterstützen.CITY
Tabelle mit den gültigen Städten und einer Fremdschlüsselbeziehung zwischen den TabellenCITY
undADDRESS
. Wenn Sie jedoch nur versuchen, ein Produkt auszuliefern, und es Ihnen egal ist, ob Sie verschiedene Versionen derselben Stadt in Ihrer Tabelle haben, reicht es aus, den Benutzer in freier Form Text eingeben zu lassen. Wenn Sie Fremdschlüssel speichern, müssen Sie natürlich eine Menge Arbeit aufbringen, um sicherzustellen, dass Sie alle gültigen Werte haben. Aber es gibt Produkte, bei denen der springende Punkt ist, dass das Unternehmen diese Arbeit bereits erledigt hat (dh Umsatzsteuerdatenbanken).quelle
Sie können auch anhand der Beispieldaten und der erwarteten Zielgruppe raten . Das hängt von Ihrem Standort ab.
Einige Notizen:
Adressen:
Namen:
Telefonnummer: Internationale Vorwahl, Länge, Handy gegen Haus, Handy als einzige Nummer zulassen
quelle
Vergessen Sie nicht, zusätzlich zu den großartigen Antworten oben auch Unicode-Zeichen zu akzeptieren. Nur weil Sie in den USA sind, heißt das noch lange nicht, dass Sie keine fremden Zeichen in Ihre Spalten aufnehmen möchten.
Trotzdem empfehle ich normalerweise 50 Zeichen für Namen. 320 sollte mehr als genug für eine E-Mail-Adresse sein (Sie können den ANSI-Standard überprüfen, um sicherzugehen). Bei Adressfehlern Vorsicht mit 255 Zeichen. Während Sie wahrscheinlich nie eine so große Adresse benötigen werden, können Sie dies tun, wenn Sie C / O-Zeilen und ähnliches einfügen. Die Stadt sollte ziemlich groß sein, da draußen gibt es einige ziemlich lange Städtenamen. Für Staat gehen Sie mit einem Kindertisch, das selbe mit Land. Vergessen Sie für die Postleitzahl nicht die internationalen Postleitzahlen, die länger sind als die US-Postleitzahlen. Nur weil du keine internationale Unterstützung hast, bist du vielleicht immer noch dabei. Es gibt viele US-Bürger, die in verschiedenen Ländern leben, darunter auch Militärangehörige.
Vergessen Sie nicht, dass der Status optional sein sollte, da viele Länder keinen Status haben.
quelle
Mein Hintern tut mir weh, weil ich auf dem Zaun sitze, also werfe ich ein paar Antworten raus und hoffe, dass ich nicht in Vergessenheit gerate. Bitte geben Sie konstruktive Kritik.
E-Mail-Addresse:
min: 6 ([email protected]). Oder 3, wenn Sie lokale Domain-E-Mail-Adressen verfolgen möchten,
max .:
320254 (RFC)Die Menge an Code zum Überprüfen einer E-Mail ist tatsächlich verrückt. Nehmen wir also an, dass der Code gültig ist, wenn er ein "@" enthält.
Möglicherweise möchten Sie eine E-Mail-Adresse als "Kommunikationsmethode" abstrahieren, damit Sie auf einfache Weise alle Methoden auflisten können, mit denen Sie mit einem Benutzer kommunizieren können.
Geschlecht
Das Geschlecht kann sich im Laufe der Zeit ändern, sodass Sie es nachverfolgen können, wenn es Ihnen wichtig ist. Folgen Sie http://en.wikipedia.org/wiki/ISO/IEC_5218
Adressen: NORAM
Ich werde den billigen Ausweg nehmen und mich an nordamerikanische Adressen halten.
Es ist praktisch, Länder, Divisionen, Städte und Landkreise zu abstrahieren, die hauptsächlich steuerpflichtig sind. Steuern können auf vielen Ebenen anfallen. Wenn Sie also einen Steuersatz auf ein abstraktes geografisches Gebiet verweisen können, sind Sie goldrichtig.
GeographicArea :
Adresse :
Fügen Sie bei Bedarf Zeile2 und Zeile3 hinzu.
Siehe http://en.wikipedia.org/wiki/Address_(geography)
Nun ist eine Adresse eine Adresse. Mehrere Personen können an einer Adresse wohnen, und eine Person kann gleichzeitig und im Laufe der Zeit mehrere Adressen haben. Daher benötigen Sie eine Many-Many-Tabelle.
PartyAdresse
Fügen Sie a
from_date
und nullable hinzu,to_date
wenn die Verfolgung über einen längeren Zeitraum erfolgt.Telefonnummern
Eine Partei kann mehrere Telefonnummern haben, und eine Telefonnummer kann von mehreren Personen verwendet werden. Eine Telefonnummer kann für Faxe, Telefonanrufe, Modems usw. verwendet werden und kann Nebenstellen haben. Diese können sich auch im Laufe der Zeit ändern.
Telefonnummer
Die Mindestanzahl kann 3 (für "911") oder 7 ("310-4NET", eine spezielle lokale Nummer, bei der Sie die Vorwahl nicht wählen können) sein.
Sie können dies gegebenenfalls in Ländercodes usw. aufteilen.
Sie sollten den http://en.wikipedia.org/wiki/E.164 Standard verwenden
PartyPhoneNumber
Namen
Namen sind hart. Hier ist der Grund:
Einige Leute haben einen legalen Namen mit nur einem Wort darin http://en.wikipedia.org/wiki/List_of_legally_mononymous_people
Einige Leute haben Namen mit vielen Wörtern http://en.wikipedia.org/wiki/Wolfe%2B585,_Senior
Einige Leute haben mehrere Namen gleichzeitig (zum Beispiel an meiner Universität gibt es viele asiatische Studenten, aber sie mögen "bevorzugte" westlichere Namen)
Manchmal müssen Sie die Namen von Personen im Laufe der Zeit nachverfolgen, z. B. Mädchennamen und Ehenamen.
Sie möchten Einzelpersonen und Organisationen aus einer Vielzahl von guten Gründen abstrahieren
create table party (ID des großen Primärschlüssels);
create table party_name (ID des Hauptschlüssels, party_id bigint nicht null referenziert party (id), type smallint nicht null referenziert party_name_type (id) --elided, ex "maiden", "legal");
create table name_component (id Hauptschlüssel, party_name_id bigint nicht null referenziert party_name (id), type smallint nicht null referenziert name_component_type (id), --elided ex "given" name text nicht null);
quelle
Aus einer etwas anderen Perspektive als in den vorherigen Antworten und da es in Ordnung zu sein scheint, über LDAP zu sprechen , kann RFC 4519 - "LDAP (Lightweight Directory Access Protocol): Schema für Benutzeranwendungen" von Interesse sein.
Dies kann hilfreich sein, wenn Ihre Anwendung einem solchen Verzeichnis zugeordnet werden muss. Ansonsten ist es wahrscheinlich nicht an Ihre Anforderungen angepasst.
Bei diesen Definitionen handelt es sich nicht nur um Daten, sondern auch um einige Operatoren, die für die Felder verwendet werden können.
postalAddress
Zum Beispiel ist eincaseIgnoreListSubstringsMatch
. Ich schlage nicht vor, dass Sie sich strikt an dieses Schema halten sollten, aber es könnte interessant sein, die Prinzipien zu betrachten, insbesondere, wie Sie Namen und Adressen in Ihrer Anwendung vergleichen müssen, kann für das Design Ihrer Datenbank relevant sein.quelle
Verwenden Sie in Bezug auf Namen doppelte Anführungszeichen, um Apostrophe in irischen oder italienischen Namen (z. B. O'Hara oder D'Amato) zu vermeiden.
Ich würde auch empfehlen, einen guten Satz von regulären Ausdrücken zu verwenden, damit Sie Teile Ihrer Namensfelder ausgeben können (z. B. Vorname, Spitzname, Jr / Sr usw.).
quelle