Database design til udesendelse af nyhedsbrev.

Tags:    databaser

Hejsa

Jeg er rimelig ny indenfor databaser/mysql, så det kan godt være jeg spørger dumt, men skal op til eksamen om 4 dage, og jeg sidder og roder med at lave en database over udesendelse af nyhedsbrev.

I første omgang har jeg brug for at vide, om de tabeller jeg har lavet er korrekt, hvis ikke hvad jeg så gør, hvis ja hvordan får jeg så tabellerne til at snakke sammen, altså hvordan skaber jeg relationer mellem dem?

Her er de 2 tabeller jeg har nu:

tilmeldte:
bruger_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
fornavn VARCHAR(20) NOT NULL,
efternavn VARCHAR(40) NOT NULL,
email VARCHAR(50) NOT NULL,
nyhedsbrev tinyint(1) NOT NULL,
dato_for_tilmeldning DATETIME NOT NULL,
PRIMARY KEY(bruger_id)



news:
news_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
emne VARCHAR(200)NOT NULL,
nyhed TEXT NOT NULL




Er dette korrekt?


Det skal ende ud med, at blive kaldt ind i flash, via php, og så langt er jeg endnu ikke nået.

Og det er i første omgang også, hvordan jeg laver relationerne, mellem tabellerne.

Jeg ville meget gerne kunne ihvertfald lave en logisk model (E/R diagram) og en fysisk model, som jeg kunne præsentere til eksamen om 4 dage.


Så I kan nok forstå jeg har brug for hjælp, og er altså helt ny i mysql.





8 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 6 karma
Sorter efter stemmer Sorter efter dato
Til ID bruger jeg altid INT(4)



I dit database design har du ikke lavet nogen foreignkeys, altså relations nøgler, så det er lidt svært at se hvor du vil kæde de 2 tabeller sammen



Oki, men hvad med relationerne?

Aner simpelthen ikke hvordan jeg laver dem, og er der ikke noget med at foreign keys skal have relationer til primary keys?

Er tabellerne korrekte eller mangler jeg nogen tabeller?








Bare brug almindelig INT, INT(4) har en begrænsning på 9999 records, hvor INT uden begrænsing kan tage om til 999.999.999.999 records.



Bare brug almindelig INT, INT(4) har en begrænsning på 9999 records, hvor INT uden begrænsing kan tage om til 999.999.999.999 records.


Oki, men det besvarer stadig ikke mit spørgsmål om, hvordan jeg laver relationer mellem tabellerne? :)



Denne artikel kan måske forklare dig en smule: http://www.udvikleren.dk/Database/Article.aspx/146/

Det du skal gøre er at knytte et nyhedsbrev til en liste af personer. Det vil sige et en-til-mange forhold. Hvis en bruger derimod kan modtage mere end eet nyhedsbrev har du et mange-til-mange forhold.

Hvis du beslutter dig for at det kun er muligt for en bruger at abonnere på kun eet nyhedsbrev, så skal du på din brugertabel lave en ny kolonne, der skal "pege" på nyhedsbrevet (det skal have samme datatype som det den peger på). Og så skal du have googlet hvordan man skriver det rent SQL mæssigt (kan ikke huske hvordan man skriver det).

Hvis du beslutter dig for at en bruger skal kunne abonnere på alle de nyhedsbreve som de vil, skal du opbryde dit mange-til-mange forhold, ved at lave en ny tabel - en "fordelingstabel". Det er en tabel som har to kolonner, en der har en reference til et nyhedsbrev, og en anden kolonne der har en en reference til en bruger.



Emil, hvad ville du sætte som foreign keys i de 2 tabeller?

Brian:

Jeg er slet ikke nået til normalisering, bliver mer eog mere forvirret, er der ikk en der kan tage det på et helt banalt niveau, og forklare, hvordan mine tabeller skal se ud og hvordan jeg laver relationer mellem dem?

Er ked af det, men er helt ny i sql og databaser, og skal til eksamen om 3 dage, så er snart lidt presset...





Kan jeg gøre følgende:

bruger:
bruger_id (PK)
fornavn
efternavn
email
nyhedsbrev tinyint(1)
dato_for_tilmelding
news_id (FK)


news:
news_id (PK)
emne
nyhed
bruger_id (FK)

send:
send_id (PK)
bruger_id
news_id



???



t