Vinnaren i pepparkakshustävlingen!
2015-10-16, 11:50
  #1
Medlem
Länge sedan jag arbetade med databaser och kom att tänka på det här med redundant data. Jag har en användartabell

Users
Kod:
ID | User
1  | Eva
2  | Ola
3  | Anna

Jag ska göra en settings-tabell som är unik för varje anvädare. Enklaste vore en tabell settings som även innehåller user. Dvs när jag skapar en användare lägger jag även in den i settingstabellen.

Settings
Kod:
ID | User | Role
1  | Eva  | Admin
2  | Ola  | Superuser
3  | Anna | Admin

Jag kan då hämta användarens settings med

Kod:
SELECT Role FROM settings WHERE user = "Eva"

Framöver kommer det det vara fler settings för varje användare, inte bara roll.

Frågan är detta rätt sätt att göra det? Tänker på att jag måste sätta in användaren i två tabeller vid skapandet av användaren.
Citera
2015-10-16, 12:18
  #2
Medlem
Du bör göra 2 tabeller:

Users
Id, Name, LastName, Address etc

Settings
UserId, Roles, Language etc


Sen hämtar du data via en Join:

Select u.Name, s.Roles from Users
left join Settings s on s.UserId = u.Id

Går att göra på andra sätt beroende på exakt hur du tänkt använda ditt data
Citera
2015-10-16, 13:15
  #3
Medlem
Citat:
Ursprungligen postat av MindReader
Du bör göra 2 tabeller:

Users
Id, Name, LastName, Address etc

Settings
UserId, Roles, Language etc


Sen hämtar du data via en Join:

Select u.Name, s.Roles from Users
left join Settings s on s.UserId = u.Id

Går att göra på andra sätt beroende på exakt hur du tänkt använda ditt data

Så Settings ska innehålla en främmande nyckel av Users PK?
Citera
2015-10-16, 16:48
  #4
Moderator
Protons avatar
Citat:
Ursprungligen postat av help
Så Settings ska innehålla en främmande nyckel av Users PK?
Ja, annars kommer du naturligtvis inte kunna avgöra vilka inställningar en viss användare ska ha.

Detta är inte redundant data btw, redundant data är data som inte tillför någon extra information, men i detta fallet är det ju fråga om en högst normal en-till-många-relation.

Att spara roller i din användartabell däremot är ingen bra lösning, då kommer varje användare endast kunna ha en roll åt gången, eftersom användarid är PN och den är unik, annars vore den ingen PN.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback