Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Web Development
You last visited: Today at 02:52

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Welche Tabellen in Datenbank?

Discussion on Welche Tabellen in Datenbank? within the Web Development forum part of the Coders Den category.

Reply
 
Old   #1
 
Warnuk3r's Avatar
 
elite*gold: 307
Join Date: Jul 2009
Posts: 1,091
Received Thanks: 434
Welche Tabellen in Datenbank?

Sers,

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?

Vielen Dank im voraus.

Lg
Warnuk3r is offline  
Old 09/12/2015, 21:21   #2
 
nils4698's Avatar
 
elite*gold: 6
Join Date: Jul 2011
Posts: 1,029
Received Thanks: 106
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 ^.^
nils4698 is offline  
Thanks
1 User
Old 09/13/2015, 14:34   #3
 
Warnuk3r's Avatar
 
elite*gold: 307
Join Date: Jul 2009
Posts: 1,091
Received Thanks: 434
Quote:
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.
Warnuk3r is offline  
Old 10/02/2015, 10:59   #4
 
Warnuk3r's Avatar
 
elite*gold: 307
Join Date: Jul 2009
Posts: 1,091
Received Thanks: 434
Sonst noch jemand ne idee?
Warnuk3r is offline  
Old 10/10/2015, 00:15   #5



 
ElDiabolus's Avatar
 
elite*gold: 0
Join Date: Jul 2009
Posts: 1,459
Received Thanks: 278
Contact
ContactID
Lastname
Firstname
FKLocationID
FKCommunicationID

Location
LocationID
Postalcode
Location

Address
AddressID
FKContactID
Street
Location

Communication
CommunicationID
Phone1
Phone2
Fax1
Fax2
Mobilephone

Communication könnte man natürlich noch optimieren...

Tabellenname
Primary Key
FK = Fremdschlüssel
ElDiabolus is offline  
Thanks
1 User
Old 10/10/2015, 15:16   #6
 
elite*gold: 0
Join Date: Feb 2010
Posts: 45
Received Thanks: 2
Quote:
Originally Posted by ElDiabolus View Post
Contact
ContactID
Lastname
Firstname
FKLocationID
FKCommunicationID

Location
LocationID
Postalcode
Location

Address
AddressID
FKContactID
Street
Location

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.
hamzatun is offline  
Thanks
1 User
Old 10/10/2015, 16:19   #7
Moderator


 
elite*gold: 558
Join Date: Feb 2010
Posts: 6,546
Received Thanks: 1,418
Ich würde es noch etwas anders machen.

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.
ComputerBaer is offline  
Old 10/10/2015, 20:31   #8
 
Pand0r's Avatar
 
elite*gold: 1438
Join Date: Jun 2007
Posts: 3,214
Received Thanks: 758
Quote:
Originally Posted by ComputerBaer View Post
Zusätzlich dazu
CommunicationType
TypeID
Name

TypeId in Communication Tabelle dann als Fremdschlüssel
Pand0r is offline  
Old 10/11/2015, 23:44   #9
 
Mashkin's Avatar
 
elite*gold: 44
Join Date: May 2010
Posts: 2,053
Received Thanks: 1,747
Mein Ansatz wäre folgender:

Contact:
ContactID
Lastname
Firstname

Area: (vorher "Location")
AreaID
(Country)
(State)
Postalcode
Name (vorher "Location")

Address:
AddressID
FKContactID
Street (evtl. noch Number?)
(Optional) (Adresszusatz)
FKLocationID

Communication:
CommunicationID
FKContactID
Identifier
Type (Phone, Fax, Mobile, Pager, ...)

Zusammenhänge:
  • Contact has many Addresses
  • Contact has many Communications
  • Address belongs to Contact
  • Address has one Area
  • Area has many Addresses
  • Area has many Contacts through Address (Address als Pivot)
  • Communication belongs to Contact
Mashkin is offline  
Old 10/12/2015, 00:56   #10
Moderator


 
elite*gold: 558
Join Date: Feb 2010
Posts: 6,546
Received Thanks: 1,418
Quote:
Originally Posted by Mashkin View Post
Area: (vorher "Location")
"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 View Post
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 View Post
[*]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 View Post
[*]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.
ComputerBaer is offline  
Old 10/12/2015, 06:12   #11
 
Mashkin's Avatar
 
elite*gold: 44
Join Date: May 2010
Posts: 2,053
Received Thanks: 1,747
Quote:
Originally Posted by ComputerBaer View Post
"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 View Post
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 View Post
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
Mashkin is offline  
Old 10/12/2015, 09:49   #12
Moderator


 
elite*gold: 558
Join Date: Feb 2010
Posts: 6,546
Received Thanks: 1,418
Quote:
Originally Posted by Mashkin View Post
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 View Post
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.
Das könnte man auch relativ einfach lösen.

ContactAddress
FKContactID
FKAddressID

Additional // Adresszusatz

Quote:
Originally Posted by Mashkin View Post
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 View Post
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.
ComputerBaer is offline  
Reply


Similar Threads Similar Threads
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



All times are GMT +1. The time now is 02:54.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.