Toon posts:

[MySQL] Meerdere db's?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Oi,

Ik ben nu op vaak aanraden van veel tweakers toch maar eens begonnen met het ontdekken van het fenomeen MySQL, ik heb van meerdere gotters veel goede informatie ontvangen maar op een paar vragen konden ze me geen antwoord geven..

Ik wil meerdere scripts gebruik laten maken van een databaes, moet ik voor iedere database een apparte db maken?

ik heb een paar projectjes.
code:
1
2
3
4
5
DB    - tables
Fotoboek  - tables
Poll    - tables
Guestbook - tables
Stats     - tables

en een poll, ik wil dus meerdere polls kunnen adden met een variabel poll vragen aantal. (poll werkt al op bestands niveau (0.o) met bestanden (op flat-db) ;) hoe moet ik dat voorelkaar krijgen (een max aantal tabellen aanmaken?)

help!..

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Je moet goed het verschil zien tussen 'database' en 'tabel'.
In een typische omgeving is dit bijvoorbeeld
code:
1
2
3
4
5
6
7
8
         MySQL      <-- Database Engine
         |
domein1   domein2   host1   <-- Databases
         |
         |
  ---------------------- 
  |   |      |
users   photos    newsitems <-- Tabellen

In de meeste gevallen kan je bij je host slechts 1 database gebruiken. Je kan in principe oneindig veel tabellen gebruiken, je moet er gewoon voor zorgen dat er geen gelijke tabelnamen zijn.
Een truuk kan zijn door voor elke tabel de functie van die tabel te zetten dus bv
code:
1
2
3
4
fotoboek_urls
fotoboek_eigenaars
fotoboek_reviews
guestbook_posts

hope this helps ;)

Verwijderd

Topicstarter
Op zaterdag 29 december 2001 00:37 schreef Orphix het volgende:
Je moet goed het verschil zien tussen 'database' en 'tabel'.
In een typische omgeving is dit bijvoorbeeld
code:
1
2
3
4
5
6
7
8
         MySQL      <-- Database Engine
         |
domein1   domein2   host1   <-- Databases
         |
         |
  ---------------------- 
  |   |      |
users   photos    newsitems <-- Tabellen

In de meeste gevallen kan je bij je host slechts 1 database gebruiken. Je kan in principe oneindig veel tabellen gebruiken, je moet er gewoon voor zorgen dat er geen gelijke tabelnamen zijn.
Een truuk kan zijn door voor elke tabel de functie van die tabel te zetten dus bv
code:
1
2
3
4
fotoboek_urls
fotoboek_eigenaars
fotoboek_reviews
guestbook_posts

hope this helps ;)
koel!!! wat kan jij uitleggen zeg :D

reactie p.0.o.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
id int(4) NOT NULL auto_increment,
date datetime NOT NULL,
ip varchar(15) NOT NULL,
host varchar(75) NOT NULL,
validated tinyint(3) NOT NULL,
level tinyint NOT NULL,
mail varchar(50) NOT NULL,
mailpw varchar(15) NOT NULL,  
mailpm char(3) DEFAULT 'Ja' NOT NULL,  
session varchar(255) NOT NULL,
cookie varchar(20) NOT NULL,
username varchar(12) NOT NULL,  
password varchar(12) NOT NULL,  

firstname varchar(50) NOT NULL,  
lastname varchar(50) NOT NULL,  
email varchar(50) NOT NULL,  
website varchar(75) NOT NULL,  

province varchar(50) NOT NULL,  
city varchar(50) NOT NULL,  
country varchar(50) NOT NULL,  
birthday varchar(50) NOT NULL,  
sex varchar(5) NOT NULL,  
icq int(12) NOT NULL,  
msn varchar(50) NOT NULL,  
irc varchar(50) NOT NULL,
ircchannel varchar(50) NOT NULL,
profession varchar(50) NOT NULL,  
school varchar(50) NOT NULL,  
text as longtext NOT NULL,
UNIQUE id (id)

dit is van me fotoboek, dus overal moet fotoboek_ voor :? :D want anders ga ik problemen/conflicten krijgen als ik nog andere tabellen voor andere dingen wil adden :?

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Nee dit zijn de velden die je definieert van 1 tabel. In dit geval dus tabel 'fotoboek'. Je hoeft hier niet overal fotoboek_ voor te zetten aangezien dit nooit zal kruisen met tabellen van andere (geinstalleerde) scripts.

Verwijderd

Topicstarter
ok dus db --> fotoboek --> data..

zou je anders een verhaaltje kunnen vertellen over hoe je meerdere sites combineerd met 1 db!

ik check dit topic vanavond/morgen pas weer, dus alvast tnx ;)

Verwijderd

Op zaterdag 29 december 2001 08:39 schreef Xtentic het volgende:
ok dus db --> fotoboek --> data..

zou je anders een verhaaltje kunnen vertellen over hoe je meerdere sites combineerd met 1 db!
Ehm, elke tabel een andere naam geven :?

  • Grum
  • Registratie: Juni 2001
  • Niet online
je kan ook gewoon als je PERSE wil met meerdere databases werken .. mysql vind het geen probleem om dat te doen

Een select op Database1.Tabel1.Veld1 doet precies wat dat zegt >:)

Het enige waar ik je nu niet 123 zekerheid over kan geven (en geen zin om het zelf uit te zoeken .. zal je dus zelf even moeten testen) is of je bij de 'FROM' ook de Database1.Tabel1 moet meegeven (lijkt me wel)

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Ja kan misschien wel, maar aangezien je bij veel hosters slechts 1 DB tot je beschikking hebt is dit geen goede gewoonte.
Xtentic, wat jij wilt is dus alle tabellen in 1 database mikken. Om te zorgen dat er geen naam-conflicten optreden moeten alle tabellen een unieke naam hebben. Aangezien je (voor zover ik zie) alle scripts/tabellen zelf maak zal dit geen problemen opleveren, aangezien je eigenlijk vanzelfsprekend overal al een unieke tabelnaam voor zal verzinnen.

Je moet pas op gaan letten bij tabellen met een naam als bv 'users'. Wanneer je zo'n script publiekelijk beschikbaar gaat stellen en mensen hebben al een script geinstalleerd die de tabel 'users' gebruikt -en de kans daarop is vrij groot- dan heb je dus een probleem...

  • eamelink
  • Registratie: Juni 2001
  • Niet online

eamelink

Droptikkels

Ja, en daarvoor is de hierbovengenoemde oplossing dus ook weer geschikt.

Als je je tabellen de volgende naam geeft:

site1_fotoboek_users
site1_fotoboek_fotos
site1_fotoboek_bijschriften

site1_poll_users
site1_poll_vragen


site2_fotoboek_users
site2_fotoboek_fotos

site2_poll_users
site2_poll_vragen


Ik kan je over het algemeen aanraden om voor elke website een andere DB te nemen, en dan het sitex_ gedeelte voor elke tabelnaam weg te laten, maar op deze manier kan je goed conflicten voorkomen...

Verwijderd

Op zaterdag 29 december 2001 08:39 schreef Xtentic het volgende:
ok dus db --> fotoboek --> data..

zou je anders een verhaaltje kunnen vertellen over hoe je meerdere sites combineerd met 1 db!
Je maakt een extra veld aan in al je tabellen, siteid ofzo en je maakt een tabel sites met
id
name
desc

sites(id) => siteid en
siteid => sites(id)

Verwijderd

Topicstarter
Tnx, dus voor mij persoonlijk is het wel gemakkelijk om toch gewoon 1 db te gebruiken met meerdere tabellen..

voor een fotoboek dus

fotoboek_id
fotoboek_username
fotoboek_password
etc

en dan voor een poll dus

poll_id
poll_username
poll_password
poll_question etc?

nja in ieder geval tnx voor de antwoorden :) ze zijn van zeer hoog niveau! :) en ik kan er zekers wat mee al moet ik het denk ik allemaal nog maar eens een paar keer rustig doorlezen!..

Tnx!

Verwijderd

Nee. Een normale database bestaat uit meerdere tabellen. Elke tabel heeft weer velden. Nou wil jij voor verschillende onderdelen van je site een ander tabel gebruiken. Dat kan, geen probleem.

Dan maak je in jou geval dus 2 of meer tabellen: poll, fotoboek en anderen. Elke van deze tabellen bevat velden met gegevens:

in het 'poll' tabel zijn dat bv: id, username, password, question, etc
In 'fotoboek' zijn dat: id, username, password

Verwijderd

Topicstarter
yes!!! :), ik ga bezig met het ontwerpen van de 'databases' want ik denk dat dat toch wel het grootste probleem gaat worden (verwacht ik)

Hoe lossen jullie dit soort problemen op --> Ik wil dus een poll dbase crearen waarin ook variable polls opgeslagen kunnen worden (met meerdere keuzes etc!) hoe doe ik dat?.. tevens zou ik willen weten of de structuur die ik gebruik voor het 'fotoboek' wel goed is :?

Verwijderd

Wat ik voor de poll zou doen is 3 tabellen maken:
poll, polloptions en pollvotes (of de nederlandse versie).

poll: pollid, question, totalvotes (hoewel het laatste niet echt nodig is)
polloptions: optionid, pollid, value (waarvan de laatste dus de optie bevat)
pollvotes: optionid, ip

op zich kun je bij polloptions nog een extra veld toevoegen: votes waarin bij gehouden wordt hoeveel votes er voor dat item zijn (dan hoef je dat niet steeds opnieuw te laten tellen).

Verwijderd

Topicstarter
Op zondag 30 december 2001 11:42 schreef Zef het volgende:
Wat ik voor de poll zou doen is 3 tabellen maken:
poll, polloptions en pollvotes (of de nederlandse versie).
[engelse dus, indien de source public wordt is dat gemakkelijk]

poll: pollid, question, totalvotes (hoewel het laatste niet echt nodig is)
polloptions: optionid, pollid, value (waarvan de laatste dus de optie bevat)
pollvotes: optionid, ip
code:
1
2
3
4
5
6
7
8
9
10
pollid begrijp ik, het nummer van de poll.
question is ook duidelijk
totalvotes ook ;)

optionid is het nummer van de vraag (1,2,3,4)?
pollid = voor welke poll is deze vraag
value = vraag :?

optionid?
ip? jah voor het registreren van het ip adres..

op zich kun je bij polloptions nog een extra veld toevoegen: votes waarin bij gehouden wordt hoeveel votes er voor dat item zijn (dan hoef je dat niet steeds opnieuw te laten tellen).
lijkt me ook handiger, maar hoe wil je het probleem oplossen dat een ip voor meerdere polls te gebruiken is

like this?
pollvotes: optionid, pollid, ip?

en is het dus ook handig voor mij on mijn fotoboek onder te verdelen? (jah ik is nog n00b ;) and like it :+)

Verwijderd

Op zondag 30 december 2001 11:58 schreef Xtentic het volgende:

lijkt me ook handiger, maar hoe wil je het probleem oplossen dat een ip voor meerdere polls te gebruiken is

like this?
pollvotes: optionid, pollid, ip?
Is geen probleem, aangezien elke option maar aan 1 poll hangt . Dus of er al gevote is door persoon met ip kijk je in de tabel of er een record is met optionid X (die weer hangt aan pollid Z) en ip Y. Zo ja, jammer dan, zo niet toevoegen die vote.

Verwijderd

Topicstarter
yes!.. ik begin het te begrijpen :D

maaruh nog iets, poll, polloptions, pollvotes neem je natuurlijk niet mee dat is gewoon een denkbeeldige naam voor die catagorie :? toch :)

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
En zie. 1 van de nadelen van MySQL. In een iets uitgebreider DBMS gebruik je gewoon gebruiker specifieke views. Je hebt dan een gebruiker voor je fotoboek, voor je polls, etc...

Verwijderd

Op zondag 30 december 2001 13:26 schreef The - DDD het volgende:
En zie. 1 van de nadelen van MySQL. In een iets uitgebreider DBMS gebruik je gewoon gebruiker specifieke views. Je hebt dan een gebruiker voor je fotoboek, voor je polls, etc...
Tja, in mySQL gebruik je gewoon verschillende databases. Ik zie niet wat er handiger is aan die specifiek views oid.

Verwijderd

Topicstarter
maar uiteindelijk kan je natuurlijk van een database altijd meerdere db's maken :? toch :?

Verwijderd

Op zondag 30 december 2001 17:23 schreef Xtentic het volgende:
maar uiteindelijk kan je natuurlijk van een database altijd meerdere db's maken :? toch :?
Eh ja... Wat al niet kan...
Pagina: 1