Hallo,

In mijn database heb ik een tabel genaamd user_settings die per gebruiker zijn instellingen bijhoudt. Die ziet er als volgt uit:

u_s_user_id
u_s_receive_email_friend_requests
u_s_receive_email_personal_messages
u_s_receive_email_presents
u_s_receive_friend_requests
u_s_show_profile

Nu vraag ik me dus af of u_s_user_id in dit geval een primary key is of niet? En zo niet, wat moet ik dan als primary key gebruiken?

Alvast bedankt!
een primary key is uniek. een user_id ook ( althans dat hoort zo weet niet of dit bij jou ook is ) en dus kan het als primary key gebruikt worden.
Oké, maar nu las ik net het volgende:

'The PRIMARY KEY constraint uniquely identifies each record in a database table.'

Dit id identificeert toch niet de rij, maar de user waaraan hij is gekoppeld, waarom is dit dan alsnog een primary key (en niet bijvoorbeeld een unique)?
een primary key is ook gewoon uniek. het hoeft niet iets met person te maken te hebben het verwijst naar de rij niet naar de persoon.
En primary key is ten alle tijde unique, en daar uit volgend NOT NULL.
Dus je geeft door een kolom een primary key te maken twee constraints; UNIQUE en NOT NULL

Je kunt je afvragen of je in deze context dit in een aparte tabel moet zetten.
Normaal gesproken heb je alleen een één op één relatie tussen tabellen als je kolommen krijgt die vaker niet dan wel een waarde bevatten, of als je om veiligheidsredenen bepaalde informatie gescheiden wilt houden.
Oké, dan heb ik het nu goed volgens mij.

Ik heb nu alleen nog een vraag over de volgende situtatie, in de tabel user_profile_items:

u_p_i_id
u_p_i_profile_id
u_p_i_type
u_p_i_x
u_p_i_y
u_p_i_z
u_p_i_content

Nu heb ik het id van de row en het id van het profiel waar het item aan is gekoppeld samen als primary key, is dit handig of kan ik net zo goed alleen het id van de row als primary key gebruiken, en zo ja; waarom?
Je moet jezelf afvragen of die tabel functioneel is
Want als je voor een user bepaalde vaste gegevens op wilt slaan, kan die net zo goed in 1 tabel opslaan
Ik gebruik deze tabel voor het opslaan van items op de profielen van de gebruikers, dat zijn items die zij zelf kunnen toevoegen, volgens mij kan ik dat niet echt op een andere manier doen.
Wat is het idee erachter? Weleens van het KISAS principe gehoord?
(Ik ook niet verzin het net zelf)
Heeft een gebruiker bepaalde eigenschappen die vast staan, dan sla je die gewoon in de gebruikerstabel op.
Het idee achter de tabel 'user_profile_items' is dat daar items in opgeslagen staan die een gebruiker aan zijn profiel kan toevoegen (Een gebruiker heeft de mogelijkheid stickers, stukjes tekst etc. toe te voegen aan zijn profiel) en in die tabel staan die stickers en stukjes tekst (met de x, y en z as van waar ze op het profiel verschijnen). Het lijkt me niet dat dit in de gebruikerstabel hoort.
We komen nu heel ergens anders als in je beginpost.
Zoals je het nu zegt heb je geen 1-1 relatie maar een n-n
Dus moet je min. 3 tabellen hebben

Reageren