Tää on tosi nolo kysymys täällä, mutta kun ensimmäistä relaatiotietokantaa yritän väsätä MySQL:llä. Eli jos teen vaik puhelinluettelon osoitteineen jne...niin tuleeko mun laittaa puhelinnumerot, osoitteet, etunimet, sukunimet, postinumerot jne omiksi tableiksi ja sitten yhdistää näitteen ID:t yhdessä taulussa vai miten se ois "oikein tehty"? Ja miten määritellään viiteavaimet taulusta toiseen. MySQL Browseria oon yrittäny käyttää. Please heittäkää jotain... Ja onko kokemusta VB:n yhdistämisestä mysql:lään? Eli tekisin kyselyjä sillä.
MYSQL taulut
ja niiden yhdistäminen
3626
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 3
Vanhimmat
* jos teen vaik puhelinluettelon osoitteineen jne...niin tuleeko mun laittaa puhelinnumerot, osoitteet, etunimet, sukunimet, postinumerot jne omiksi tableiksi*
Ei. Vaan lajittelet nuo järkevästi eri taulukoihin, jotta mahdollisilta toistoilta vältytään kohtuudella.
Esim
NIMET:
nimet_id
etunimi
sukunimi
POSTI:
posti_id
postinumero
postitoimipaikka
OSOITE:
osoite_id
(posti)_id
katu
katu_numero
...
PUH:
puh_id
puh_numero
YHDISTYS:
nimet_id
osoite_id
puh_id
Tuo on vaan väsyneen ihmisen näkymys nopealla miettimisellä, joten parempiakin keinoja on.
* se ois "oikein tehty"?*
Taitaa nää tietokanta jutut kuulua niihin joissa ei ole absoluuttisen oikeita ratkaisuja, vaan sinnepäin olevia. Ja ratkaisut ovat aina tekijänsä näköisiä. Sekä vaikuttaa myös kuinka tehokasta järjestelmää ollaan tekemässä, usein liian normalisoinnin sijasta denormalisoinilla saavutetaan tahokkuutta lisää, mutta siitä seuraa sit omat haittansa.
*Ja miten määritellään viiteavaimet taulusta toiseen*
MySQL tukee viiteavaimia vain InnoDB tyyppisissä tauluissa, jotka ovat vastaavasti hitaampia kuin MyISAM tyyppiset, joten kannattaa harkita tapauskohtasesti tartteeko viiteavaimia. Lukaseppas Ari Hovin SQL-opas, siinä on neuvotta tuo asia, ja muutenkin mielenkiintoinen kirja. Omat tiedot huonohkoja viiteavaimista, joten parempa kun en sano mitään.
tosi paljon....tää jeesas! Siis täähän toimii :)
Riippuu kuule ihan siitä mihin tämä sovellus tulee.
Esim tilaustietokannassa ei ole järkeä laittaa puhelinnumeroa ja osoitetta eri tauluihin koska puhellinumero ja osoite ovat tilaajakohtaisia.
Sensijaan esim. teleliikennefirmassa asia voisi olla toisin; puhelinnumero ja osoite on laitettava erikseen koska puhelinnumeroita tulisi pystyä muuttamaan eri osoitteisiin ja relaatioihin helposti ja tarkasti. Telefirmalle puhelinnumeron tulee olla uniikki asia, kun taas webbishopin pitäjälle tilausten identifiointi on tärkeämpää.
Kolmas esimerkki voisi olla valtion henkilötietojärjestelmä jossa ihminen on uniikki ja osoite voi vaihtua. Tällöin ei kannata laittaa osoitetietoa samaan tauluun nimen ja henkilötietojen kanssa koska taulun päivityksestä tulisi hankalaa ja referenssit olisi vaikea tallentaa.
Eli; riippuu mistä roikkuu. Pyri siihen että sovelluksesi kannalta kaikki "yhteenkuuluva" ei-uniikki tieto jolla ei ole relaatiota pysyy samassa taulussa.
Yleensä järkevää on erottaa vain ja ainoastaan postinumero ja postitoimipaikka omaksi taulukseen koska postinumerot ja postitoimipaikat ovat kaikille yhteistä standardia tietoa. Kadunnimiä yms ei ole järkevää erottaa kuin ehkä jossain laajoissa karttasovelluksissa joissa pitäisi tallentaa myös koordinaattitietoa yms jonka yhdistää kadunnimeen.
Jos teet joka jutulle oman taulunsa niin todennäköisesti vain hidastat sovellusta tolkuttomasti, mutkistat koodia tarpeettomasti ja jos puhutaan alle 100000 rivistä niin et saavuta kertakaikkiaan yhtään mitään etua yksinkertaisempaan ratkaisuun nähden missään tapauksessa.