|
Coloana ntext
Last post 04-03-2008, 7:38 PM by crestinul. 15 replies.
-
04-02-2008, 4:14 PM |
-
04-02-2008, 4:37 PM |
-
Diana
-
-
-
Joined on 03-21-2006
-
-
sysadmin
-
-
|
Incearca:
- tabel Project cu coloanele: ProjectID int (primary key)+ coloanele numerice...
- tabel ContentType cu coloanele: ContentTypeID int (primary key), ContentType varchar(...) - "Long", "Short", etc...
- tabel ProjectContent cu coloanele: ProjectContentID int (primary key), ProjectID (foreign key), ContentTypeID (foreign key), Content (ntext). Daca proiectul exista si are "content", inserezi randuri in ProjectContent cu acel ProjectID si ContentTypeID.
"Content" - ul pentru un proiect:
SELECT Content FROM ProjectContent WHERE ProjectID = @ProjectID AND ContentTypeID = @ContentTypeID
|
|
-
04-02-2008, 6:47 PM |
-
04-02-2008, 8:04 PM |
-
ggciubuc
-
-
-
Joined on 03-18-2006
-
Bucharest
-
sysadmin
-
-
|
Citez din books online de la 2005
"ntext
Variable-length Unicode data with a maximum length of 2^30 - 1 (1,073,741,823) characters. Storage size, in bytes, is two times the number of characters entered. The SQL-2003 synonym for ntext is national text.
"
Asa cum am subliniat in rosu e vorba de o data variabila deci atat cat e atata stocheaza (nu maximum de 1 miliard); asa cum e si pt varchar se stocheaza undeva niste biti de supravegehere a continutului coloanei.
Cat despre locul unde ar fi sa fie postate datele este clar ca pe coloane atrage redundanta in date pt ca daca ai
tabel(col1,col2,...,coln) si coln, coln+1,coln+2 sunt goale inseamna pierdere de spatiu si complexitate crescuta pt programator fata de o abordare
tabel(col,tip) unde in col ar intra toate datele col1,...coln iar tip le deosebeste.
Dar si aici sunt exceptii apropos de scopul care trebuie servit de schema bd : de exemplul ai Adresa1, Adresa2 un client care are 2 sedii, e benefic sa pastrezi cele 2 coloane chiar daca ai clienti cu un singur sediu decat sa adaugi tabela Adrese care inseamna join-uri , indecsi etc
Gheorghe Ciubuc,SQL Server Influencer, MCP(SQL 2000), MCTS (SQL Server 2005) , OCA(Oracle 9i), Sybase(Brainbench)
|
|
-
04-02-2008, 9:47 PM |
-
sirrocco
-
-
-
Joined on 01-24-2008
-
-
db_datawriter
-
-
|
Ok, ntext e lamurit. am gasit exact acelasi lucru si pentru 2000.
Dar la partea cu coloanele inca nu sunt convins. Deci : Ai tabelul Proiect si are coloanele : NumeProiect, NumeProiectLung, NumeProiectMaiScurt, Descriere, DescriereScurta, DescriereLunga si inca vreo 5 asa sa zicem. Chiar daca unele sunt null , tot nu vad in asta un motiv destul de bun sa folosesc tabel(col,tip).
Si nici nu vad cum ar fi mai usor pentru programator chestia cu tabel(col,tip). Eu chiar asta zic, ca mi-e mai greu.
|
|
-
-
04-02-2008, 10:32 PM |
-
-
04-02-2008, 11:11 PM |
-
ggciubuc
-
-
-
Joined on 03-18-2006
-
Bucharest
-
sysadmin
-
-
|
Diana:
Si ce faci daca alt client are de exemplu 3 sedii?
De obicei la momentul de analiza din ciclul de viata al unui proiect problema se lamureste foarte clar : "Cate sedii detin clientii dvs.? Cate ar trebui sa retineti in baza de date?" Mai pui intrebari ca sa se vada cat si cum se prelucreaza datele stocate in astfel de coloane de tip vector; daca acestea sunt des folosite si apar prin interogari iar bd se estimeaza ca va creste dramatic se poate sparge tabela printr-o trecere intr-o forma normala superioara.
Gheorghe Ciubuc,SQL Server Influencer, MCP(SQL 2000), MCTS (SQL Server 2005) , OCA(Oracle 9i), Sybase(Brainbench)
|
|
-
04-02-2008, 11:24 PM |
-
ggciubuc
-
-
-
Joined on 03-18-2006
-
Bucharest
-
sysadmin
-
-
|
sirrocco: Dar la partea cu coloanele inca nu sunt convins. Deci : Ai tabelul Proiect si are coloanele : NumeProiect, NumeProiectLung, NumeProiectMaiScurt, Descriere, DescriereScurta, DescriereLunga si inca vreo 5 asa sa zicem. Chiar daca unele sunt null , tot nu vad in asta un motiv destul de bun sa folosesc tabel(col,tip). Si nici nu vad cum ar fi mai usor pentru programator chestia cu tabel(col,tip). Eu chiar asta zic, ca mi-e mai greu.
Tabelul (col,tip) ar fi cam asa
tblDescrieri
IDDescriere (int) Descriere (tip text sau varchar(max)) TipDescriere (varchar cu valorile : "Lunga", "Scurta")
si tabelul de legatura
tblDescriereProiect
IDProiect IDDescriere
Problema e ca de fapt trebuie avut in vedere ca aplicatia sa fie usoara pt utilizator mai intai, sa returneze/prelucreze datele rapid deci performanta pe server si mai apoi cat de repede o rezolva programatorul.
Sigur e de discutat de exemplu TipDescriere are pe client un combobox, este o singura caseta text (nu 3 sau 2 ) si nu aglomereaza interfata.
Gheorghe Ciubuc,SQL Server Influencer, MCP(SQL 2000), MCTS (SQL Server 2005) , OCA(Oracle 9i), Sybase(Brainbench)
|
|
-
04-02-2008, 11:34 PM |
-
ggciubuc
-
-
-
Joined on 03-18-2006
-
Bucharest
-
sysadmin
-
-
|
Ca sa continui expunerea precedenta parerea mea este ca in activitatea de programare software trebuie sa urmarim viziunea lansata metodologia Agile care cere ca ca aplicatia sa fie utilizabila si utilizatorul satisfacut de ea. Degeaba ne incurcam in forme si-n interogari supersofisticate daca se asteapta o caruta de timp pt a returna datele. Apoi abordata mai intai simplitatea si apoi crescuta progresiv complexitatea.
In aceasta idee as vrea sa se vada si raspunsurile mele la postarea http://sqlserver.ro/forums/thread/4491.aspx
Gheorghe Ciubuc,SQL Server Influencer, MCP(SQL 2000), MCTS (SQL Server 2005) , OCA(Oracle 9i), Sybase(Brainbench)
|
|
-
04-03-2008, 1:07 AM |
-
Gherry
-
-
-
Joined on 10-12-2006
-
-
sysadmin
-
-
|
ggciubuc: Diana:
Si ce faci daca alt client are de exemplu 3 sedii?
De obicei la momentul de analiza din ciclul de viata al unui proiect problema se lamureste foarte clar : "Cate sedii detin clientii dvs.? Cate ar trebui sa retineti in baza de date?" Mai pui intrebari ca sa se vada cat si cum se prelucreaza datele stocate in astfel de coloane de tip vector; daca acestea sunt des folosite si apar prin interogari iar bd se estimeaza ca va creste dramatic se poate sparge tabela printr-o trecere intr-o forma normala superioara.
poate oricand sa apara un client nou cu un numar mai mare de sedii insa daca utilizatorul decide (si e multumit) sa stocheze doar un anumit numar limitat pt fiecare in parte atunci ar putea fi acceptabila solutia.
|
|
-
-
04-03-2008, 5:19 PM |
-
04-03-2008, 5:30 PM |
Page 1 of 2 (16 items)
1
|
|
|