webForumDet fria alternativet

Privata meddelanden - tabellstruktur

Databaser & SQL

6 svar · 275 visningar · startad av Jörgen HP

Medlem sedan feb. 20012 412 inlägg
Frågan#1

Tjoohoo!

Jag sitter och skissar på en funktion för privata meddelanden mellan medlemmar. Jag kom en bit på väg men körde fast när varje medlem ska kunna skapa egna mappar att dela upp sina meddelanden i dessa.

Någon som har tips på hur detta kan se ut?

I nuläget har jag följande:

CREATE TABLE `pm` (
`pm_current_id` int(11) NOT NULL default '0',
`pm_date` datetime NOT NULL default '0000-00-00 00:00:00',
`pm_subject` varchar(255) NOT NULL default '',
`pm_from_uid` int(11) NOT NULL default '0',
`pm_from_deleted` tinyint(1) NOT NULL default '0',
`pm_from_status` tinyint(1) NOT NULL default '1',
`pm_to_uid` int(11) NOT NULL default '0',
`pm_to_deleted` tinyint(1) NOT NULL default '0',
`pm_to_status` tinyint(1) NOT NULL default '1',
`pm_from_ip` varchar(18) NOT NULL default '',
PRIMARY KEY (`pm_current_id`),
KEY `pm_id` (`pm_current_id`),
KEY `pm_from_uid` (`pm_from_uid`),
KEY `pm_to_uid` (`pm_to_uid`)
) TYPE=InnoDB;

CREATE TABLE `pm_mess` (
`pm_id` int(11) NOT NULL auto_increment,
`pm_mess` text NOT NULL,
KEY `pm_current_id` (`pm_id`)
) TYPE=InnoDB;

Medlem sedan dec. 200012 464 inlägg
#2

Varför delar du upp den informationen i två tabeller?

Lägg till en tabell för folders

folderid
folderName
Ownedby

Initialt får alla medlemmar en folder (inbox) eller så.

och sedan så har du en kolumn i PM-tabellen som pekar ut i vilken folder det ligger.

Varför använder du onödigt många konstruktioner som är mysql-specifika t.ex. KEY och `?

Medlem sedan feb. 20012 412 inlägg
#3

"Varför delar du upp den informationen i två tabeller?"

För man kan skicka ett pm till flera medlemmar, låt oss anta att jag skickar samma meddelande till 10 andra medlemmar, då är det ju onödigt att spara samma text på 10 ställen.

"Varför använder du onödigt många konstruktioner som är mysql-specifika t.ex. KEY och `?"

Jag indexerade fälten genom phpmyadmin, då lade den till de extra key som finns med.

Det med folders-tabellen var ju en smart lösning på problemet, tack! :)

Medlem sedan dec. 200012 464 inlägg
#4

Uppdelning i två tabeller:

jag köper den anledningen, men då borde väl flera kolumner från pm hamna i pm_mess?

Det där med icke-standard: Bara lite allmän irritation gentemot Mysql som är bra på att hitta på egna konstruktioner fastän det finns helt likvärdiga i SQL-standarden.

Medlem sedan feb. 20012 412 inlägg
#5

"jag köper den anledningen, men då borde väl flera kolumner från pm hamna i pm_mess?"

Syftar du på subject (den är jag medveten om), eller är det fler kolumner du vill ha dit?

Hur skrivs det i den "vanliga" SQL-standarden?

Medlem sedan dec. 200012 464 inlägg
#6

jag tänkte på kolumner som pm_from_ip (som kommer att dubbellagras) etc men det blir ju ganska bekvämt att göra som du gjort.

Standard:

T.ex. att mysql tillåter att man blandar uttryck av olika typ hur som helst (i default), `istället för " , att använda key istället för create index (create index ingår i och för sig inte i standarden men det finns i stort sett alla dbms.)

Medlem sedan feb. 20012 412 inlägg
#7

Okey, tack och bock för alla dina svar LarsG! :D

Det jag nu sitter och funderar på är hur jag ger alla en inbox och en skickatbox som default. Jag kan ju iofs hårdkoda dem, men det hade varit betyligt enklare (bättre) att låta dem vara dynamiska om man vill ändra något senare. Det känns onödigt att göra (i nuläget) 700 x 2 poster som är lika. Det enda som skiljer är ju boxowner. I övrigt kommer de ju heta samma sak.

252 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)