Momenteel ben ik bezig met een online rooster-systeem.
Hier kan men voor bepaalde afdelingen binnen een bedrijf diensten definiëren en die diensten kunnen weer op een bepaalde datum toegekend worden aan een werknemer.
De tabel Diensten ziet er als volgt uit:
dienst_id is in dit geval de primary key,
afdeling_id is een FK voor de afdeling waarvoor deze dienst van toepassing is,
token is een 3-letter combinatie die men in het rooster-overzicht te zien krijgt ter identificatie van deze dienst (bijv. RDD voor Reguliere Dag Dienst),
description is de beschrijving van de dienst,
start_time en end_time vertegenwoordigen de starttijd en eindtijd voor de dienst,
bg_color en color zijn waardes die in de CSS (stylesheet) van toepassing zijn voor deze dienst.
Nu heb ik daar de volgende vraag over:
In principe zou de combinatie afdeling_id/token ook voldoen als primary key, maar ik heb begrepen dat als ik een SQL-query met een WHERE-clause op `token` zou hebben, hij dus niet optimaal gebruik zou maken van de index, omdat de primary key samengesteld is.
Kan ik dan beter een aparte index zetten op token of is het gebruik van deze "surrogate" dienst_id perfect geschikt voor deze situatie?
Alvast dank...
Hier kan men voor bepaalde afdelingen binnen een bedrijf diensten definiëren en die diensten kunnen weer op een bepaalde datum toegekend worden aan een werknemer.
De tabel Diensten ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| mysql> describe Diensten; +-------------+-----------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+-----------------+------+-----+---------+----------------+ | dienst_id | int(3) unsigned | NO | PRI | NULL | auto_increment | | afdeling_id | int(3) unsigned | NO | | | | | token | varchar(3) | NO | MUL | | | | description | varchar(50) | NO | | | | | start_time | time | NO | | | | | end_time | time | NO | | | | | bg_color | char(7) | NO | | | | | color | char(7) | NO | | | | +-------------+-----------------+------+-----+---------+----------------+ |
dienst_id is in dit geval de primary key,
afdeling_id is een FK voor de afdeling waarvoor deze dienst van toepassing is,
token is een 3-letter combinatie die men in het rooster-overzicht te zien krijgt ter identificatie van deze dienst (bijv. RDD voor Reguliere Dag Dienst),
description is de beschrijving van de dienst,
start_time en end_time vertegenwoordigen de starttijd en eindtijd voor de dienst,
bg_color en color zijn waardes die in de CSS (stylesheet) van toepassing zijn voor deze dienst.
Nu heb ik daar de volgende vraag over:
In principe zou de combinatie afdeling_id/token ook voldoen als primary key, maar ik heb begrepen dat als ik een SQL-query met een WHERE-clause op `token` zou hebben, hij dus niet optimaal gebruik zou maken van de index, omdat de primary key samengesteld is.
Kan ik dan beter een aparte index zetten op token of is het gebruik van deze "surrogate" dienst_id perfect geschikt voor deze situatie?
Alvast dank...