Kom ihåg mig?
Home Menu

Menu


Något hinder för DATE AS PRIMARY?

Ämnesverktyg Visningsalternativ
Oläst 2009-08-19, 09:46 #1
Tvartom Tvartom är inte uppkopplad
Medlem
 
Reg.datum: Oct 2004
Inlägg: 86
Tvartom Tvartom är inte uppkopplad
Medlem
 
Reg.datum: Oct 2004
Inlägg: 86
Hej!
Håller på med databasdesign (MySQL) av ett tidssytem.
Ska knyta vissa objekt till specifika dagar.

Eftersom `mydays` bara ska finnas max en post per dag,
ska en date-kolumn ha ett unikt index.
Det fungerar uppenbarligen att ha date som primary,
min fråga är om det finns annan aspekt som gör att
att man ändå inte bör använda det så här?
Jag har nämligen aldrig sett detta någon annanstans.

Med date-kolumn som primary:
Kod:
CREATE TABLE mydays (
 id DATE NOT NULL,
 mylabel VARCHAR(45) NULL,
 PRIMARY KEY (id)
) ENGINE=InnoDB;

CREATE TABLE mydata (
 id INT NOT NULL AUTO_INCREMENT,
 dateid DATE NOT NULL,
 content VARCHAR(45) NULL,
 PRIMARY KEY (id),
 KEY (dateid),
 FOREIGN KEY (dateid) REFERENCES mydays (id)
) ENGINE=InnoDB;
Alternativet är att lägga ett separat unikt index:
Kod:
CREATE TABLE mydays2 (
 id INT NOT NULL AUTO_INCREMENT,
 myday DATE NOT NULL,
 mylabel VARCHAR(45) NULL,
 PRIMARY KEY (id),
 UNIQUE KEY (myday)
) ENGINE=InnoDB;
Vad anser ni?
/ Lasse
Tvartom är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-08-19, 14:09 #2
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Ett ID på en post skall vara något unikt, och enbart användas för att kunna länka ihop olika data.
ID på en post skall inte behöva vara synligt för en användare/brukare.

Jag skulle rekommendera att du använder ett fält till med DATE & UNIQUE på istället. Eftersom du är ute efter något estetiskt.
Jonas är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-08-19, 15:22 #3
Tvartom Tvartom är inte uppkopplad
Medlem
 
Reg.datum: Oct 2004
Inlägg: 86
Tvartom Tvartom är inte uppkopplad
Medlem
 
Reg.datum: Oct 2004
Inlägg: 86
Tack för ditt svar Jonas.

Fördelarna jag ser är att jag kan söka i mydata-tabellen på datumintervall utan att behöva en join.
(Datastrukturen här är en stark förenkling av verkligheten då den även innehåller versionhantering, så jag har redan andra joinar.)

Anledningen till att jag har mydays är att jag kan vara säker på att det inte skapas poster med dagar i mydata som inte är definierade i mydays.
Tvartom är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-08-20, 08:11 #4
emilvs avatar
emilv emilv är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Feb 2004
Inlägg: 1 564
emilv emilv är inte uppkopplad
Bara ett inlägg till!
emilvs avatar
 
Reg.datum: Feb 2004
Inlägg: 1 564
Citat:
Originally posted by Tvartom@Aug 19 2009, 15:22
Anledningen till att jag har mydays är att jag kan vara säker på att det inte skapas poster med dagar i mydata som inte är definierade i mydays.
Använd foreign keys för det.
emilv är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 17:35.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017