Frage

ich es realisieren Fragen ähnlich sein könnte, aber ich konnte nicht finden, die für die Führung nahe genug war.

In Anbetracht dieser Spezifikation,

Site
---------------------------
SiteID      int    identity
Name        varchar(50)

Series
---------------------
SiteID      int
SeriesCode  varchar(6)
...
--SeriesCode will be unique for every unique SiteID

Episode
----------------------
SiteID      int
SeriesCode  varchar(6)
EpisodeCode varchar(10)
...

meine vorgeschlagene Konstruktion / Umsetzung ist

Site
----------------------------
SiteID      int     identity
Name        varchar(50)


Series
-------------------------------------------
SeriesID    int     identity, surrogate key
SiteID      int         natural key
SeriesCode  varchar(6)  natural key
UNIQUE(SiteID, SeriesCode)
...

Episode
-------------------------------------------
EpisodeID   int     identity, surrogate key
SeriesID    int     foreign key
EpisodeCode varchar(6)  natural key
...

Alles, was daran falsch? Ist es in Ordnung hier die SeriesID Surrogat als Fremd * Schlüssel zu haben? Ich bin nicht sicher, ob ich irgendwelche offensichtlichen Probleme bin fehlt, die entstehen können. Oder wäre es besser, Verbund natürlichen Schlüssel zu verwenden (SiteID + SeriesCode / SiteID + EpisodeCode)? das wäre die Folge Tabelle aus dem Tabelle entkoppeln Im Wesentlichen und das nicht sitzt richtig für mich.

Worth Zugabe ist, dass SeriesCode sieht aus wie ‚ABCD-1‘ und EpisodeCode wie ‚ABCD-1NMO9‘ in der Roh-Eingangsdaten, die diese Tabellen bevölkern werden, so das ist eine andere Sache, die geändert werden könnte nehme ich an.

*: "virtueller" Fremdschlüssel, da sie zuvor von den höheren-ups entschieden worden sind sollten wir nicht verwenden Ist Fremdschlüssel

War es hilfreich?

Lösung

Ja, es sieht alles in Ordnung. Der einzige (kleine) Punkt, den ich machen könnte, ist, dass, wenn Sie einen anderen 4. Kind Tisch weg von Episode hängen hat, werden Sie wahrscheinlich EpisodeId nicht benötigen, wie Episode.EpisodeCode ein einziges Attribut natürliche Schlüssel ausreichen Zeilen in Folge zu identifizieren und zu lokalisieren. Es kann nicht schaden, es dort zu lassen, natürlich, aber als allgemeine Regel füge ich Ersatzschlüssel als Ziele für FKs in Child-Tabellen zu handeln und versuchen, einen Narural Schlüssel zu jeder Tabelle hinzufügen zu identifizieren und redundante Datenzeilen zu steuern ... Also, wenn ein Tisch mit einem FK Referenzierung es keine andere Tabelle hat, (und wird es nie) ich stören manchmal nicht einen Ersatzschlüssel darin enthält.

Andere Tipps

Was ist ein „virtueller“ Fremdschlüssel? Haben die höher-ups entscheiden, nicht für Fremdschlüssel zu benutzen? In diesem Fall verwenden Sie keinen Fremdschlüssel überhaupt. Sie sind nur so zu tun zu.

Und ist Folge die beste Wahl für ein Unternehmen? Ist es nicht bedeuten, anzeigen oder Podcast wirklich oder so, und gerade geschieht, immer gerade jetzt Teil einer Serie sein? Wenn ja, wird diese Änderung in der Zukunft? Wird Folge schließlich missbraucht werden, zeigen umfasst außerhalb einer Serie? In diesem Fall könnte über Series Episode Website bindet wieder, um dich zu.

alles gegeben, und unter der Annahme, dass Sie als ein Grunzen wahrscheinlich irgendetwas davon nicht ändern können: Wenn ich Sie ist ich sicherer fühlen würde, natürlichen Schlüssel verwenden, wo immer möglich. In Abwesenheit von Fremdschlüssel-Constraints, macht es schlechte Daten leichter zu erkennen, und wenn Sie zu einem gewissen SeriesCode greifen = ‚leer‘ Tricks später das ist einfacher, mit natürlichen Schlüsseln auch.

Mein Vorschlag:

Mit natürlichem / Geschäft als Primärschlüssel, wenn möglich , außer in den folgenden drei Situationen:

  1. Der natürliche / Geschäftsschlüssel ist unbekannt im Moment des Einsetzens
  2. Der natürliche / Geschäftsschlüssel ist nicht gut (es ist nicht einzigartig, es ist verantwortlich häufig zu ändern)
  3. Der natürliche / Business Key ist ein Verbund von mehr als 3 Spalten und die Tabelle wird untergeordnete Tabellen

In Situationen 1 und 2 ein Ersatzschlüssel ist requiered .

In Situation 3 ein Ersatzschlüssel ist stark empfohlen .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top