Have created your tables as a test.
Creation scripts are (sorry bit of a long posting):
DROP TABLE /!32200 IF EXISTS/ clients;
CREATE TABLE CLIENTS
(
CID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
CMPNYNAME VARCHAR(20),
FNAME VARCHAR(20) NOT NULL,
LNAME VARCHAR(20) NOT NULL,
HOUSE_NO CHAR(6) NOT NULL,
STREET VARCHAR(30) NOT NULL,
TOWN VARCHAR(20),
POSTCODE VARCHAR(10) NOT NULL,
EMAIL VARCHAR(20),
CONTACT_NO INT ZEROFILL NOT NULL
)
TYPE=INNODB;
DROP TABLE /!32200 IF EXISTS/ artists;
CREATE TABLE ARTISTS
( MEMBERID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
FNAME VARCHAR(20) NOT NULL,
LNAME VARCHAR(20) NOT NULL,
HOUSE_NO CHAR(6) NOT NULL,
STREET VARCHAR(30) NOT NULL,
TOWN VARCHAR(20),
POSTCODE VARCHAR(10) NOT NULL,
DOB DATE NOT NULL,
EMAIL VARCHAR(20),
CONTACT_NO INT ZEROFILL NOT NULL,
STAGENAME VARCHAR(15),
EXPRNCE_IN_YEARS INT UNSIGNED NOT NULL,
SEX CHAR(1) NOT NULL,
NI_NO VARCHAR(12) NOT NULL
)
TYPE=INNODB;
DROP TABLE /!32200 IF EXISTS/ specialist_area;
CREATE TABLE SPECIALIST_AREA
( MEMBERID INT UNSIGNED NOT NULL PRIMARY KEY,
SPECIAL_AREA VARCHAR(20) NOT NULL,
GENRE VARCHAR(20),
FOREIGN KEY (MEMBERID) REFERENCES ARTISTS (MEMBERID)
)
TYPE=INNODB;
DROP TABLE /!32200 IF EXISTS/ artist_booking;
CREATE TABLE ARTIST_BOOKING
( MEMBERID INT UNSIGNED NOT NULL,
CID INT UNSIGNED NOT NULL,
DATE_NOW TIMESTAMP(6) NOT NULL,
DATE_FOR DATE,
HOURS TINYINT(2),
PRIMARY KEY (MEMBERID, CID, DATE_NOW),
KEY CID_KEY (CID),
FOREIGN KEY (MEMBERID) REFERENCES ARTISTS (MEMBERID),
FOREIGN KEY (CID) REFERENCES CLIENTS (CID)
)
TYPE=INNODB;
This creates all the tables with the two changes:
1.Created primary key on Memberid in specialist_area
2. Created a seperate index on CID in artist booking.
Cheers
Justin