Kezdőoldal » Számítástechnika » Programozás » Felhasználói beállítások...

Felhasználói beállítások tárolása adatbázisban. Jól értelmezem az alábbiakat?

Figyelt kérdés

Most utánanéztam egy és elvileg úgy a jó, hogy van egy tábla a beállításoknak és van egy kötőtábla, ami a felhasználó ID-ját és a beállítás ID-ját tartalmazza tulajdonképpen.


Valahogy így:

Setting

- Id

- Name

- Value


UserSetting

- Id

- SettingId

- UserId


Egyrészt nem tudom, ez-e a legjobb gyakorlat másrészt mindig belebonyolódom.


Mondjuk egy vicces példa, de az enyém ehhez hasonló.

Ha a felhasználó kedvenc növénye a kaktusz, akkor egy kaktusz a weblap háttere, ha rózsa, akkor pedig az.


Setting

Id | Name | Value

-----------------------------

1 | BackgroundPic | Rose

2 | BackgroundPic | Cactus


UserSetting

Id | SettingId | UserId

-----------------------------

1 | 1 | 1

2 | 2 | 2

3 | 1 | 5

4 | 2 | 4


Így kellene valahogy tárolni?



2020. okt. 28. 21:29
1 2
 1/15 anonim ***** válasza:
40%
Nem jó mert redundancia lehet a táblázatba. Vagyis az utolsó példád. Ha 5 embernek a háttérképe a kaktusz akkor 5x szerepel a táblába.
2020. okt. 28. 21:47
Hasznos számodra ez a válasz?
 2/15 anonim ***** válasza:
10%
Ja bocsánat nem. Nem ott állítod be :D.
2020. okt. 28. 21:48
Hasznos számodra ez a válasz?
 3/15 anonim ***** válasza:
0%
De én külön létrehoznék beállításnak táblát. Például a háttér csak a háttér. Így nincs felesleges mező.
2020. okt. 28. 21:49
Hasznos számodra ez a válasz?
 4/15 anonim ***** válasza:
0%

És a usersettings tábla tartalmazná az összeset tehát kevesebb soron kell végig menni


Tehát pl


Background


Id | Name


-----------------------------


1 | Rose


2 | Cactus


Valami


Id | Name


-----------------------------


1 | Tul 1


2 | Tul 2


...stb


UserSetting


Id | Background | Valami | UserId


-----------------------------


1 | 1 | 1 | 1


2 | 1 | 2 | 2


..stb

2020. okt. 28. 21:52
Hasznos számodra ez a válasz?
 5/15 anonim ***** válasza:
0%
Mert ha pl van 1000 felhasználó és 100 féle beállítás akkor a usersettingsbe lehet hogy 100 ezer rekord lenne
2020. okt. 28. 21:53
Hasznos számodra ez a válasz?
 6/15 A kérdező kommentje:

# 5


Igen, ezt olvastam hátrányként. :/


Viszont nem tudom előre, milyen beállítások lehetnek még. Tényleg nem tudom, jelenleg egyetlenegy, de lehet még bármennyi, bármilyenek.


A UserSetting tábla szerintem praktikus lenne, ha csak SettingId-ből, UserId-ből állna. A későbbiekben ne kelljen bővülnie új oszlopokkal.


Nem érzem ezt most egyszerűnek és példát se láttam rá még sehol. :D

2020. okt. 28. 22:02
 7/15 anonim ***** válasza:
Utólag is lehet módosítani a táblát. Tehát már megvan 10 beállítás és a usersettings táblába ott a 10 beállítás idegenkulcsként + a user id akkor később hozzárakod idegenkulcsként a 11. beállítást. az idegenkulcs lehet NULL értékű. :)
2020. okt. 28. 22:21
Hasznos számodra ez a válasz?
 8/15 anonim ***** válasza:

És akkor simán mehet az 1 - 1 kapcsolat a a usertábla és a usersettings tábla között, mert így meg 1 - * kapcsolat kell, amit rosszabb menedzselni, hiszen validálnod kell mindent, hogy nehogy két háttérkép kerüljön egyemberhez stb. De ha 1 - 1 kapcsolat van akkor csak egy usersettings tartozhat hozzá és a user settings rekodjába szerepelnek idegenkulcsként a többi beállítás táblája. Én így csinálnám. Könnyebb kezelni, biztonságosabb, gyorsabb lesz a lekérdezés, illetve a bővítés sem nehéz. Plusz minden táblába lehet egy Default érték is, tehát ha nem választ semmit akkor a defult lesz. ;)


Az nem baj, hogyha mondjuk egy Adatbázis sok táblából áll. :)

2020. okt. 28. 22:25
Hasznos számodra ez a válasz?
 9/15 anonim ***** válasza:

És arra is gondolj, hogy az adatbázist használnod kell például a szoftverben, amit majd csinálsz, vagy a webalkalmazásodban.


Tehát, például az alkalmazásodba lesz egy beállítások gomb, ahol mondjuk ott a Háttérkép, Betűméret ... stb Mondjuk van 10-20 féle különböző konfiguráció és neked 1 táblában van az összes beállítás belezsúfolva. Például van 5 háttérkép az elején utána 5 betűtípus, de aztán még 2 háttérképet utolag beraksz akkor azok sem sorrendben lesznek, de még mellette van másik 200 felé és mondjuk pl combobox-ok vannak a beállítások kiválasztására vagy checkbox-ok ..stb akkor minden egyes ilyen felületre az egész settings táblán végig kell menned kiszedni az adatokat és úgy berakni. Nem lenne jobb, ha a háttérkép comboboxba csak a háttérképek táblát kéne lekérdezni és a nevet belerakni? :) Szóval gondolj arra, hogy későbbiekben ezzel, hogy fogsz dolgozni. Érdemes teszteket csinálni.

2020. okt. 28. 22:31
Hasznos számodra ez a válasz?
 10/15 anonim ***** válasza:

én ilyen esetben ha RDBMS-ben kell tárolnom "valamennyi" oszlopot és nem kell benne keresnem, akkor JSON vagy tömb típust használok.

alapvetően úgyis a felhasználó azonosító alapján keresed ki a rekordot. a beállítások pedig csak egy szimpla oszlop.


igazából ha van rá mód akkor létrehozhatsz hozzá saját típust is, tehát amolyan nested table megoldás is jó lehet (bár ez nyilván mysql-ben mondjuk nem érhető el) de a json vagy array type azt hiszem ott is van és a keretrendszerek esetén már a model-nél tudod castolni, szóval a user objektumban már tömbként jelenik meg a "settings".

gyors, egyszerű, könnyen bővíthető és nincs reduncancia.

2020. okt. 29. 00:32
Hasznos számodra ez a válasz?
1 2

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!