Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[DB-Design] "IDs" als Integer oder String?

Empfohlene Antworten

Ja, da ein Verein ja mehrere Sportarten betreiben kann.

Macht nichts, etwa so:

Sportvereine

- ID (INT AUTOINCREMENT)

- Name (Varchar)

- ... (Daten des Vereins)

Sportarten

- ID (INT AUTOINCREMENT)

- Sportarten_ID

- Bezeichnung

- ... (weitere Infos zur Sportart an sich)

Zwischen Sportvereine und Sportarten 1-n Beziehung, für die Tabelle Sportarten zusammengesetzter Schlüssel aus ID und Sportarten_ID

Zwischen Sportvereine und Sportarten 1-n Beziehung, für die Tabelle Sportarten zusammengesetzter Schlüssel aus ID und Sportarten_ID

Vielleicht verstehe ich deinen Ansatz nicht, aber

1. ist eine autoinc ID für die Sportarten ja eine weitere (noch künstlichere) ID. Die Sportarten_ID reicht doch schon als PK, oder nicht?

2. Und wo stellst du bei diesen Beispiel den Zusammenhang zwischen Verein und Sportart her? Eben in der Art


Verein.ID - Sportart.ID

1 - 1

1 - 2

2 - 1

3 - 1

4 - 2

4 - 3

1 - 3

EDIT:

Oder ist die Sportarten Tabelle bei dir schon die Verbindungstabelle?

Dann hättest du doch aber nichts gewonnen, oder? Oder du hast zu jeder Sportart einen neuen Eintrag für jeden Verein der sie ausübt. Selbst wenn sie von 3 versch. Vereinen ausgeübt wird.

Oder ist die Sportarten Tabelle bei dir schon die Verbindungstabelle?

Ja aber vergiss deine Zwischentabelle die ist hier überhaupt nicht nötig.

Dann hättest du doch aber nichts gewonnen, oder?

Doch eine Tabelle weniger was wiederum bedeutet einen join weniger also bessere performenc, lesbare sql query usw…

Zu Beispiel 2

Verein.ID - Sportart.ID

1 - 1

1 - 2

2 - 3

3 - 4

4 - 5

4 - 6

1 - 7

Also Verein 1 hat zwei Sportarten (Judo und Karate) usw..

Vielleicht verstehe ich deinen Ansatz nicht, aber

da bist du nicht der einzige :)

Ja aber vergiss deine Zwischentabelle die ist hier überhaupt nicht nötig.

und wie würde das ganze dann aussehen, wenn z.b. verein 2 ebenfalls judo und karate anbietet? dann müssen in der sportarten-tabelle einträge dupliziert werden, was man ja vermeiden möchte, oder?

Doch eine Tabelle weniger…

Und redundante Sätze dazugewonnen, das hast du noch vergessen ;)

EDIT:

Dein Ansatz ist meiner, nur vor der Normalisierung.

EDIT2:

Ironie:

Eine weitere "Optimierung" wäre doch dann, die Sportarten gleich zu den Vereinen in 1 Tabelle zu nehmen. Dann würde man generell nur 1 Tabelle haben, die SQLs wären einfach und übersichtlich...

Das ist bei der Normalisierung von relationalen DBs eben immer die Sache. Man bekommt mehr Tabellen und muss die joinen. Wie weit man da gehen möchte muss sich jeder überlegen, aber den Schritt zu den 3 Tabellen sollte man hier schon tun.

Es ist beides Möglich, dass habe ich auch nicht abgestritten! Aber wenn man eine Eindeutige Eindeutigkeit (1 mal pro Datenbank) haben möchte, dann ist ein Unique besser und wie gesagt unter MS SQL ist ein Unique schneller als ein Bigint.

Bitte gib doch Quellen oder sonstige Beweise an, wenn du schon so seltsame Behauptungen aufstellst.

"Ein GUID ist unter MS SQL schneller als ein BIGINT" ist abgesehen davon eh eine Stammtischaussage, da einerseits nicht angegeben wird wobei genau der Identifier schneller sein soll und ausserdem weder GUID noch BIGINT ihnen eigene, spezifische Geschwindigkeiten besitzen.

Goos

PS: Ich behaupte natuerlich das Gegenteil ;)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.