WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   SQL Sätta primary key (https://www.wn.se/forum/showthread.php?t=11139)

1337pm 2005-12-02 11:20

Om jag har Number som första kolumn i alla tabeller (Mimer), är det då lämpligt att ha Number som primary key i alla tabeller? Eller är det fördelaktigt att komplettera med andra attribut t.ex. Number + City? Det torde räcka med Number eller bör jag väga in andra aspekter när jag sätter primary key?

kullervo 2005-12-02 11:58

Om varje rad har ett unikt ID-nummer så är det den kolumnen som bör vara primary key och inget annat.

1337pm 2005-12-02 12:45

Okej.

En fråga till:
Jag har i uppgift att utröna huruvida en uppsättning tabeller är i BCNF eller inte. Vi ska anta att "City names" är unika. Men det går väl inte? För att om jag gör City unikt (övriga kolumner Number och State) så kan jag inte mata in stad X mer än en gång i min tabell? För om jag gör det får jag "UNIQUE constraint violation"???

Det vore trevligt om jag fick svar, jag vill ju vara säker på min sak när jag hävdar att vi lär oss saker på utbildningen som inte skulle fungera IRL.

Robert 2005-12-02 14:16

Om City Names ska vara unikt och varje stad har n antal Numbers och/eller State så går det ju inte att ha i samma tabell (om du då inte har City + en id kolumn som PK... fast det luktar ändå som fel designval. Att mata in en stads namn mer än en gång i en tabell låter jobbigt...)

Lindahl 2005-12-02 14:47

Håller med Robert. Namnen bör väl dessutom representeras på nåt annat sätt förrutom en vanlig textsträng, nu vet jag inte vad det är för slags städer du har i din tabell, men det finns ju en hel del städer (eller åtminstone tätorter i Sverige) som heter likadant men ligger på olika ställen. Kommer dock endast på utländska exempel... typ newcastle, wellington, kingston osv... men det finns svenska exempel också.

1337pm 2005-12-02 15:36

Rörande primary keys, det spelar ingen roll om jag använder 1, 2, 3, 4 osv. i en tabell och sen gör likadant i en annan tabell? Eller ska jag välja nummer som skiljer sig åt mellan de tabeller som finns i databasen?

eg0master 2005-12-02 15:37

Brukar man inte låta bli att svara på läxhjälpsfrågor och hänvisa till dokumentation?

Men du säger att Vi ska anta att "City names" är unika så är ju det en förutsättning för uppgiften oavsett om det är rimligt IRL eller inte. Läs uppgiften och svara på frågan som ställs. Hitta inte på egna frågor och förutsättningar. Då blir din studietid jobbig.

Och primary key behöver inte vara "number" i alla tabeller. Primary key skall vara den nyckel som unikt ger en rad i varje tabell. I vissa tabeller är det Number, i andra en sträng och i vissa flera kolumner. Allt beror på.

Lyssna på din lärare, gör uppgifterna på egen hand och lär dig av dina misstag istället.

eg0master 2005-12-02 15:38

Citat:

Originally posted by 1337pm@Dec 2 2005, 16:36
Rörande primary keys, det spelar ingen roll om jag använder 1, 2, 3, 4 osv. i en tabell och sen gör likadant i en annan tabell? Eller ska jag välja nummer som skiljer sig åt mellan de tabeller som finns i databasen?
Vad tror du själv? vad säger din lärare? vad säger din kursliteratur?

1337pm 2005-12-02 15:51

Citat:

Ursprungligen postat av eg0master
Citat:

Ursprungligen postat av 1337pm
Rörande primary keys, det spelar ingen roll om jag använder 1, 2, 3, 4 osv. i en tabell och sen gör likadant i en annan tabell? Eller ska jag välja nummer som skiljer sig åt mellan de tabeller som finns i databasen?

Vad tror du själv? vad säger din lärare? vad säger din kursliteratur?

1. Jag tror att det inte spelar någon roll.
2. Min lärare är sjuk, svarar inte på mail och har ställt in föreläsningar i två veckor.
3. Antog att jag skulle få ett snabbare svar här än om jag skulle läsa i boken. Plus att jag jobbar mot en deadline med en labb.

Men nu är det så att jag är inte 14 år och den som brukar fråga om skolarbeten online, men nu gör jag ett undantag. Men visst, behåll kunskapen för dig själv men då behöver du ju inte svara heller. Ursäkta tonläget, blir bara så lack på viktigpettrar som tror de kan verka som ett subsititut för lärare.

Edit: Jag ser inte hur det kan spela någon roll om jag ställer frågan som webmaster eller som student. Jag lär mig ju för att kunna applicera IRL vid ett senare tillfälle.

Edit2: Att hela tiden hänvisa till dokumentationen hjälper inte - det stjälper. Och om det skulle vara en regel så skulle ju en hel del inlägg på WN inte finnas, för det finns ju massor av saker som man frågar om här vars svar står att finna i diverse bäcker och dylikt. Eller...vänta...vi kan kanske lägga ner hela WN, vi har ju Google till vår hjälp. Fattaru?!

Crotalus 2005-12-02 21:33

En primärnyckel är unik för en specifik tabell så du behöver inte oroa dig om att 1,2,3,4... finns i mer än en tabell.

Sen kan jag ju tillägga att jag starkt rekommenderar att ALLTID ha en primärnyckel som ett heltal (och ej mer precision än nödvändigt).

Att ha strängar eller andra datatyper som primärnyckel innebär dels större utrymme för att lagra referenser i andra tabeller och dels prestandaförlust när du ska slå ihop flera tabeller.


Alla tider är GMT +2. Klockan är nu 08:09.

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