Ερώτηση για mysql - php

Apostolos Mpessas mpessas at freemail.gr
Thu Dec 17 14:56:18 EET 2009


On Thu 17 of Dec 2009 13:43:56 rouvas at di.uoa.gr wrote:
> Apostolos Mpessas wrote:
> > On Thu 17 of Dec 2009 01:22:12 Christos Ricudis wrote:
> >> , Apostolos Mpessas wrote:
> >> > On Wed 16 of Dec 2009 19:26:22 rouvas at di.uoa.gr wrote:
> >> >> Συμβουλή:
> >> >> Ποτέ μα *ποτέ* μα εντελώς ΠΟΤΕ μην βασίζεσαι στα strings για
> >>
> >> συσχετίσεις
> >>
> >> >> μεταξύ οποιονδήποτε σχέσεων.
> >> >>
> >> >> Επέκταση της Συμβουλής:
> >> >> Εξαιρούνται οι περιπτώσεις που δεν μπορείς να κάνεις αλλιώς, γιατί
> >> >> παρέλαβες ηλίθιο σχεδιασμό.
> >> >
> >> > Κάπως απόλυτο δεν είναι αυτό;
> >>
> >> Akougetai ontws apolyto, alla einai apo tis periptwseis pou otan 8a thn
> >> pathseis, 8a thn pathseis TOSO asxhma pou 8a eyxosoun na mhn htan apla
> >> apolyto, alla xaragmeno se petrines plakes.
> >>
> >> Dyo.
> >>
> >> Pou katebhkan apo bouno.
> >>
> >> Sth xersonhso tou Sina.
> >>
> >> Twra, h 8ewria leei oti opoiesdhpote sysxetiseis mporoun na ginoun
> >> xrhsimopoiwntas to elaxisto yposynolo datums pou eksartoun leitourgika
> >> ("prosdiorizoun monoshmanta") oloklhro to tuple.
> >>
> >> Sthn praksh, stis MxN sxeseis xrhsimopoiountai panta artificial primary
> >> keys, (kai) gia to logo oti h 8ewria agnoei kati leptomereioules tou
> >> styl "ti shmainei isothta se dh8en profaneis typous dedomenwn opws ta
> >> strings".
> >
> > Υπάρχουν κανόνες. Και υπάρχουν και εξαιρέσεις (τις οποίες φυσικά πρέπει
> > να είσαι σε θέση να αναγνωρίζεις, αλλιώς ακολούθα τους κανόνες).
> > Για παράδειγμα, σε πίνακα με τα top-level domains και σε τι αντιστοιχούν,
> > δε
> > νομίζεις ότι είναι (τουλάχιστον) overkill να προσθέσεις integer για
> > primary
> > key;
> 
> An ta strings exoun xaraktires apokleistika entos tou ASCII diastimatos 33
> eos 126, i katastasi einai kapos kalliteri. Ostoso, arketa problimata
> patramenoun, opos:
> 
> 1) Ti ginetai me to empty string; H Oracle sto girna os null, i MySQL os
> string me length miden, i Postgres den ksero. Tha mou peis empty string se
> primary key; Giati oxi; Valid timi einai gia string! Ki an sou katsei;
> 

Δε γνωρίζω τι επιτρέφει η Oracle (αλλά το primary key είναι not null εξ 
ορισμού), αλλά, αν είναι επιτρεπτή τιμή, ok. Αλλά πάλι πού κολλάει στο 
συγκεκριμένο παράδειγμα (είπαμε, ο κανόνας είναι ακέραιοι για primary keys); 
Οι τιμές είναι συγκεκριμένες.

> 2) Stis simerines web-based efarmoges, na se do na kaneis
> urlencode/urldecode string IDs pou periexoun tous xaraktires +?%& klp.
> 

Δεν υπάρχουν μόνο web-based εφαρμογές. Επίσης, όπως ένα primary key μπορεί να 
βρεθεί σε url, δεν καταλαβαίνω πώς κάποιο άλλο πεδίο δεν μπορεί να βρεθεί σε 
url. Άρα, τι γλυτώνεις;
Εξάλλου, γιατί πρέπει η σύνταξη των urls να καθορίζει το σχήμα της βάσης;

> 3) Eidika stin periptosi ton domain names, ti tha kaneis me ta
> international domain names se UTF8;
> 

Ενδεχομένως να αγνοώ κάτι, αλλά δεν σε πιάνω. Τα TLD είναι συγκεκριμένα (com, 
net, gr, uk, ...).

> > Σε ένα πίνακα με τους νομούς της χώρας (όπου σε μια συσχέτιση με πόλεις
> > έχεις
> > σχέση MxN);
> 
> Prosopikos kai se auti tin periptosi tha xrisimopoiousa numeric IDs, an
> mporousa.
> 

Υπάρχει διαφορά μεταξύ "θα χρησιμοποιούσα" και "ποτέ, ποτέ, μα ποτέ". Το πρώτο 
το δέχομαι (και σε πολλές περιπτώσεις είναι το σωστό). Αλλά, υπάρχουν και 
περιπτώσεις που δε συμφέρει, όπως για λόγους απόδοσης (hint: γλυτώνεις ένα 
join).

Αποστόλης


More information about the Linux-greek-users mailing list