3 svar
90 visningar
Ygolopot behöver inte mer hjälp
Ygolopot 215
Postad: 18 jan 2022 14:29

Anteckningsbok med Sqlite3, ny tabell för varje användare?

Hej!

Håller på att bygga en anteckningsbok i Python och har lite funderingar.

Först gjorde jag det här som en träning i OOP men nu vill jag använda en databas så inte all information försvinner varje gång jag stänger ner programmet. Jag är helt ny med SQL och undrar därför hur jag borde designa det hela, jag  har en tabell som lagrar:

first_name, last_name, username, password

Den här tabellen används till en klass som hanterar skapandet an nya användare, inloggning osv.

Nu vill jag skapa en användar-specifik anteckningsbok. Rent intuitivt tänker jag då att jag kan m.h.a username som Primary Key (username är unik för alla användare, men kanske dålig idé att ha som primary key?) ska "länka" på en tabell med kolumnerna: id, header, note, där id är det unika id:t som varje note har, header för rubrik och note för själva texten.

Det här verkar dock vara en jättedålig idé enligt i stort sett alla trådar på stack overflow så jag undrar om någon här ver hur man i regel brukar göra? Ska jag lägga till fler kolumner till den redan skapade tabellen?  Så att det blir:

first_name, last_name, username, password, id, header, note

Som sagt, väldigt ny på det här så tar tacksamt emot alla tips!

Tack på förhand!

Laguna Online 30440
Postad: 18 jan 2022 20:02

Jag tycker inte din idé är beskriven så tydligt att jag kan säga att den är dålig.

Att ha en enda tabell med allting i är däremot inte bra.

CurtJ Online 1200
Postad: 18 jan 2022 20:16

En bra designprincip är att aldrig skapa primärnycklar som har någon sorts mening förutom att de är unika för en post i tabellen. Alla tabeller, med få undantag, skall innehålla en nyckel/id (oftast en datatyp long men det kan variera beroende på hur många unika id man ska kunna skapa) som i de databashanterare jag känner till kan skapas automatiskt när man skapar poster. Dessa id används sen i referenser, relationer. Som exempel har din person ett unikt id som sen läggs in i de notes-poster som tillhör den personen. I persontabellen har du en kolumn id som är primärnyckel, i notes-tabellen har du en kolumn id som är unik nyckel för den note'en och den har en kolumn created_by som innehåller personens id. Den senare kallas "foreign key" med databas-slang . Du vill inte lägga ihop personposten och note's posten för då får du väldigt mycket redundant information om en person har flera notes och det är det relationstabeller är gjorda för att undvika.

Lycka till

Ygolopot 215
Postad: 18 jan 2022 20:25

Sorry för otydligheten Laguna, jag var inte riktigt säker på hur mycket jag behövde presentera av projektet för att få det att make sense. Men det känns som du CurtJ fattade precis vad jag ville göra så jag ska testa att följa det du föreslog. Tack för hjälpen båda! :)

Svara
Close