Kezdőoldal » Számítástechnika » Weblapkészítés » MySQL/PHP? Segítség kéne

MySQL/PHP? Segítség kéne

Figyelt kérdés
Sziszatok, lenne egy fontos kérdésem, sehogy sem tudok rájönni. phpmyadmin-on az adatbázisban van 2 táblám: felhasználók/szolgáltatások .. össze akarom kapcsolni a felhasználók táblából a szolgáltatásszámot a szolgaltatók táblából a szolgáltatóid-vel .. ugyebár nekem one to many reláció kéne, hogy egy felhasználónak több szolgáltatása is lehessen, phpmyadmin-on nem tudtam megoldani .. sikerült összekapcsolnom, de akkor ha töröltem egy felhasználót, akinek volt egy olyan szolgáltatás,hogy INTERNET .. akkor a szolgáltatások táblázatból is kitörlődött az INTERNET szolgáltatás .. remélem nem voltam annyira bonyolult :D ha tudtok segítsetek, előre is köszönöm :)

2015. jan. 19. 14:21
 1/6 anonim ***** válasza:
100%
Miért nem készítesz egy kapcsolótáblát, hogy a szolgáltatások ne legyenek redundánsan tárolva?
2015. jan. 19. 14:31
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:

felhasznalok: user_id|nev|... (pl 0-Jani,1-Peti)

szolgaltatasok: szolg_id|nev (pl 0-net,1-tv,2-telo)

+felhasznalo_szolgaltatasai: user_id|szolg_id (pl Janinak internet és tv: 0-0,0-1)


Ti kapcsolótábla nevébe szoktatok valami jelölést tenni, pl kapcs_felhasznalo_szolgaltatas? (hogy áttekinthetőbb legyen)

2015. jan. 19. 17:51
Hasznos számodra ez a válasz?
 3/6 A kérdező kommentje:
Köszi szépen, megoldottam úgy még egy táblával :)
2015. jan. 20. 12:23
 4/6 A kérdező kommentje:
Esetleg még ha abban tudnátok segíteni, hogy van a felhasználó, neki van 1-es szolgáltatása (pl. az internet) .. és ha azt szeretném, hogy a felhasználónak legyen 1-es és mondjuk 2-es szolgáltatása is (internet,telefon) .. akkor azt hogy a legkivitelezhetőbb megoldani? Felhasználó táblában a Szolgáltatás mező TEXT-re van beállítva
2015. jan. 20. 12:28
 5/6 2xSü ***** válasza:

> Köszi szépen, megoldottam úgy még egy táblával :)


Jaj-jaj! Azt, hogy mi tartozik egy táblába, és mi kerül külön táblába, azt azért sokkal józanabb érvek határozzák meg. Lásd: [link]


> Esetleg még ha abban tudnátok segíteni, hogy van a felhasználó, neki van 1-es szolgáltatása (pl. az internet) .. és ha azt szeretném, hogy a felhasználónak legyen 1-es és mondjuk 2-es szolgáltatása is (internet,telefon) .. akkor azt hogy a legkivitelezhetőbb megoldani? Felhasználó táblában a Szolgáltatás mező TEXT-re van beállítva


Ez így nem az igazi. Pl. mi van, ha van egy szolgáltatás, ami éppenséggel egyetlen felhasználóhoz sem tartozik. Azt pl. hogy listázod? Hol tárolod mondjuk a nevét, az egységárat, stb…? És mi van, ha egy szolgáltatás neve megváltozik? Pl. az eddigi egyetlen „internet” szolgáltatás kettéválik vonalas és mobil internetre? Végigmész az akár több millió rekordon, és átírod mindenhol?


Valahogy így kellene felépíteni a dolgot.


CREATE TABLE user (

id INT AUTO_INCREMENT NOT NULL,

name VARCHAR(200) CHARACTER SET utf8 COLLATE utf8_hungarian_ci NOT NULL,

stb. stb…

PRIMARY KEY (id)

)


CREATE TABLE service (

id INT AUTO_INCREMENT NOT NULL,

name VARCHAR(200) CHARACTER SET utf8 COLLATE utf8_hungarian_ci NOT NULL,

stb., stb…

PRIMARY KEY (id)

)


CREATE TABLE use_service (

user_id INT NOT NULL,

service_id INT NOT NULL,

start_date DATE,

stb., stb…

PRIMARY KEY(user_id, service_id)

)



Aztán szépen össze lehet kapcsolni a táblákat mondjuk így:


SELECT

user.id AS userid,

user.name AS username,

service.id AS serviceid,

service.name AS servicename,

use_service.start_date AS startdate

FROM use_service, user, service WHERE (use_service.user_id = user.id) AND (use_service.service_id = service.id)


Vagy:

SELECT …

FROM use_service

INNER JOIN user ON user.id = use_service.user_id

INNER JOIN service ON service.id = use_service.service_id

2015. jan. 20. 14:39
Hasznos számodra ez a válasz?
 6/6 2xSü ***** válasza:
(Ha hiba lenne a kódban, akkor elnézést kérek. Nem ellenőriztem, nem próbáltam ki, csak úgy beírtam ide a válaszhoz.)
2015. jan. 20. 14:39
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!