programmiere grade eine Adressenverwaltung als Webanwendung und benutze eine MySQL Datenbank. Nun würde ich um Rat fragen wie die Tabellen etc. darin aussehen sollen.
Spalten: id lastname firstname location postalcode street street_altern1 street_altern2 location_altern1 location_altern2 phone1 phone2 fax1 fax2 mobilephone
Ich würde es dann so machen:
Tabelle: contact
Id lastname firstname locationid addressid communicationid
Tabelle: location
Id postalcode location
Tabelle: address
Id street street_altern1 street_altern2 location_altern1 location_altern2
Tabelle: communication
Id phone1 phone2 fax1 fax2 mobilephone
Jegliche Verbesserungen sind erwünscht, bin mir vorallem wegen den Alternativen nich so sicher... ggf. für Alternativen noch Tabelle/n?
location_altern1 & location_altern2 würde ich hoch in die Tabelle "location" packen... Wieso sollten die alternativen denn nicht beim primären dabei sein ?
Bei dem Rest musst du auf antworten von anderen warten... Ich würd's so machen wie du ^.^
Wieso sollten die alternativen denn nicht beim primären dabei sein ?
Wegen Redundanz dachte ich. Wenn paar Leute im selben Ort leben dann haste das durch die Alternativen zwangsweise mehrfach drin. Wenn man die Alternativen z.b. in eigene Tabelle packt hätte ich jeden Ort und jede Straße nur 1x in der db.... bin mir aber auch nich so sicher.
Communication CommunicationID
Phone1
Phone2
Fax1
Fax2
Mobilephone
Communication könnte man natürlich noch optimieren...
Tabellenname Primary Key
FK = Fremdschlüssel
Da hatte wohl jemand anständigen Datenbanken Unterricht!
Ich würde dir außerdem empfehelen InnoDB zu benutzen.
Ist irgendwie von der Perfomance besser.
Die Adresse sollte nicht auf den Kontakt zeigen, sondern der Kontakt auf die Adresse. Es können schließlich mehrere Personen im selben Haus wohnen und haben damit die selbe Adresse. Oder wenn man einer Person auch mehrere Adressen geben will, dann eben mit einer zusätzlichen Tabelle.
Die Adresse sollte den Verweis auf die Stadt haben, dann kann man nur beim Betrachten der Adress-Tabelle erkennen welche Adressen mit dem gleichen Strassennamen in unterschiedlichen Städten sind. Außerdem wird eine Person, wenn sie mehrere Adressen hat, die nicht alle in der selben Stadt haben, oder?
Bei der Telefonnummer könnte man die Tabelle komplett umbauen. ID, Number, Typ (Fax, Phone, Mobil als Zahl) und ContactID. Dann kann eine Person beliebig viele Telefonnummern haben, braucht aber kein Fax.
Edit (11.10.2015 10:40): Ich habe die sinnvolle Korrektur/Ergänzung von Pand0r eingefügt, siehe nächster Beitrag. Warum ich die Tabelle nicht selbst erstellt habe ist mir ein kleines Rätsel.
Edit (12.10.2015 01:05): Ich habe ein paar Ergänzungen bei Mashkin geklaut, siehe Beitrag 9, und einige kleine Änderungen an Namen und Reihenfolge vorgenommen.
"City" wäre vermutlich auch ein passender Name. Immerhin dienen alle Informationen in dieser Tabelle dazu, eine Stadt eindeutig zu identifizieren. Ich habe diese Namensänderung mal bei mir vorgenommen.
Quote:
Originally Posted by Mashkin
Type (Phone, Fax, Mobile, Pager, ...)
Solltest du da immer "Phone" oder "Fax" reinschreiben wollen, dann verbraucht das unnötig viel Speicherplatz. Die Lösung mit einer eigenen Tabelle ist da besser. Auch wenn man gezielt alle Telefon- oder(!) Faxnummer haben will, geht das über die TypeID wahrscheinlich schneller.
Quote:
Originally Posted by Mashkin
[*]Address belongs to Contact
Ich denke es gibt so viele Häuser, in denen mehr als eine Familie wohnt, dass du ruhig von "Address has many Contacts" ausgehen kannst. Oder?
Quote:
Originally Posted by Mashkin
[*]Communication belongs to Contact
Nur als Anmerkung: Das hier macht hingegen Sinn, weil eine Telefon- oder Faxnummer für gewöhnlich nur zu einer Person/Familie gehört und nicht für alle Familien gilt, die im selben Haus wohnen.
"City" wäre vermutlich auch ein passender Name. Immerhin dienen alle Informationen in dieser Tabelle dazu, eine Stadt eindeutig zu identifizieren. Ich habe diese Namensänderung mal bei mir vorgenommen.
Schon, allerdings habe ich mich gefragt warum nicht schon im Original von "City" die Rede war.
Quote:
Originally Posted by ComputerBaer
Solltest du da immer "Phone" oder "Fax" reinschreiben wollen, dann verbraucht das unnötig viel Speicherplatz. Die Lösung mit einer eigenen Tabelle ist da besser. Auch wenn man gezielt alle Telefon- oder(!) Faxnummer haben will, geht das über die TypeID wahrscheinlich schneller.
Ich würde evtl. den ENUM-Typ in Betracht ziehen - die Beispielnamen wären dann bloß Aliase. Das kommt darauf an, wie viel Flexibilität für Kontaktoptionen nötig sind.
Quote:
Originally Posted by ComputerBaer
Ich denke es gibt so viele Häuser, in denen mehr als eine Familie wohnt, dass du ruhig von "Address has many Contacts" ausgehen kannst. Oder?
Das Gegenstück zu "Address has many Contacts" ist aber "Contact belongs to Address" womit nur eine Address pro Contact möglich wäre. Korrekt ist also "Address has many Contacts through ContactAddresses" mit Pivot-Tabelle.
In Anbetracht eines möglichen Adresszusatzes (wie in vielen Kontaktformularen üblich; bspw. "Appartment 3" oder die PostNummer bei Packstationen) könnte man aber auch davon ausgehen, dass Addresses eher spezifisch für einzelne Contacts sind.
Wenn man eine Address für einen Contact löscht, müsste man so stets das Pivot-Element (ContactAddress) löschen und prüfen, ob das Address-Element evtl. noch von anderen Pivot-Elementen referenziert wird.
Eine Änderungsoperation der Address müsste ebenfalls die Mehrfachbenutzung des Elements in Betracht ziehen, das Element duplizieren und das relevante Pivot-Element ändern.
Es wäre je nach Anwendung (besonders bei Zustelladressen) sogar sinnvoll, auch den Empfängernamen in der Entität zu speichern, anstatt ihn aus dem Contact zu bilden (z.B. bei Verwendung eines Alias/Stichworts):
Address: AddressID FKContactID
Line1
Line2
Street (evtl. noch Number?) FKCityID
Das Gegenstück zu "Address has many Contacts" ist aber "Contact belongs to Address" womit nur eine Address pro Contact möglich wäre. Korrekt ist also "Address has many Contacts through ContactAddresses" mit Pivot-Tabelle.
Das liegt jetzt daran, dass wir es wohl auf etwas andere Art gelernt haben. Für mich wären es "Ein Kontakt hat mehrere Adressen" und "Eine Adresse kann zu mehreren Kontakten gehören". Aus dieser n:m-Beziehungen ergibt sich dann automatisch, dass eine weitere Tabelle gebraucht wird.
Quote:
Originally Posted by Mashkin
In Anbetracht eines möglichen Adresszusatzes (wie in vielen Kontaktformularen üblich; bspw. "Appartment 3" oder die PostNummer bei Packstationen) könnte man aber auch davon ausgehen, dass Addresses eher spezifisch für einzelne Contacts sind.
Wenn man eine Address für einen Contact löscht, müsste man so stets das Pivot-Element (ContactAddress) löschen und prüfen, ob das Address-Element evtl. noch von anderen Pivot-Elementen referenziert wird.
Eine Änderungsoperation der Address müsste ebenfalls die Mehrfachbenutzung des Elements in Betracht ziehen, das Element duplizieren und das relevante Pivot-Element ändern.
Da hast du Recht, bei Änderungen an der Adresse oder beim Löschen ist es aufwändiger. Man könnte einfach aus Prinzip keine Adressen Löschen, sondern nur die Beziehungen zu den Kontakten. Und bei Änderungen könnte man auch immer eine neue Adresse anlegen. Später könnte eine andere Aufgabe (1x pro Woche/Monat) nach Adressen ohne Kontakt suchen und diese löschen, falls man das möchte.
Quote:
Originally Posted by Mashkin
Es wäre je nach Anwendung (besonders bei Zustelladressen) sogar sinnvoll, auch den Empfängernamen in der Entität zu speichern, anstatt ihn aus dem Contact zu bilden
Das hier wirkt eher wie eine Adressverwaltung für Privatpersonen, die Sache mit den Zustelladressen können wir denke ich außer Acht lassen. Inhaltlich hast du natürlich Recht, dass Rechnungs- und Lieferadressen auch einen anderen Namen beinhalten können, als den des Kontoinhabers.
Datenbank Tabellen 2 Datensätze erzeugen beim Absenden 06/30/2015 - Web Development - 3 Replies Guten Abend,
Ich möchte auf meinem Skript es so erzeugen das man seine Daten vollständig eingibt und dabei 2 Querys bzw. Datensätze erzeugt werden in jeweil 2 verschiedenen Tabellen.
Beispiel:
Man trägt seine Daten ein und drückt auf Absenden. Dann erscheint ein Datensatz in der Tabelle " Daten " . Jedoch soll noch in einer anderen Tabelle " Log " im gleichen Moment die IP Adresse und den Port eingetragen werden.
Bis zum Schritt mit den Daten habe ich es hinbekommen. Weiter nicht. ...
Alle Tabellen in Account Datenbank gelöscht 09/20/2014 - Metin2 Private Server - 1 Replies Hey leute, ich habe ausversehen Alle Tabellen in der "account" Datenbank gelöscht.
Könnte mir jemand nh leere .sql geben?
Oder irgendwie, sodass ich meine Homepage nutzen kann?
Wollte das Federdesign von Flying men installieren und der sagt mir folgenden fehler:
http://i.epvpimg.com/CGzsf.png
Hoffe mit kann jemand helfen
So sieht die Datenbank derzeit aus:
Welche Datenbank? 01/18/2013 - Flyff Private Server - 2 Replies Nachdem ich schon länger in dem Forum hier rumgeister hab ich mir vorgenommen mich mal selbst an einem P-Server zu versuchen.
Ich benutze die VS 2010 Source von aldimaster nur weiß ich nicht welche der releasten Datenbanken dafür am besten geeignet ist.
Außerdem würde mich interessieren ob das v15 Tutorial von Sedrika dafür noch aktuell ist. Die dort verlinkte Datenbank ist leider nichtmehr online.
Welche Tabellen kopieren? 07/12/2011 - Metin2 Private Server - 0 Replies Hallo,
Ich habe mir ein DynDns Server erstellt , weil mein alter Hamachi Server nicht mehr starten kann.
http://www.elitepvpers.com/forum/metin2-pserver-di scussions-questions/1298096-fehler-connection-refu sed.html
Ich will aber nicht das alle Accounts und Chars mit Gegenstände also das Inventar der Spieler gelöscht wird!
Jetzt ist meine Frage welche Tabellen muss ich kopieren damit die
Accounts , Chars , Items , Gilden , Level erhalten bleiben ?
Danke
Welche Datenbank 10/30/2008 - Flyff Private Server - 1 Replies Heeey^^
Ich wollte mia auch mal einen P-Server machen aba welche DB soll ich nehmen?
Welche ist die "beste"
Mfg Sosouke :D