CREATE table kluby(
  id INT(11) PRIMARY KEY auto_increment,
  nazwa VARCHAR(50) UNIQUE NOT NULL,
  ranking INT(5) UNIQUE NOT NULL
) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE table tenisisci(
  id INT(11) PRIMARY KEY auto_increment,
  nazwisko VARCHAR(20) NOT NULL,
  waga INT(3) NOT NULL CHECK (waga > 0 and waga < 500),
  wzrost INT(3) NOT NULL CHECK (wzrost > 0 and wzrost < 250),
  klub INT(11) REFERENCES kluby
) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE table kat_wiekowe(
  id INT(11) PRIMARY KEY auto_increment,
  min INT(3) NOT NULL CHECK (min > 0 and min < 100),
  max INT(3) NOT NULL CHECK (max > 0 and max < 100),
  nazwa VARCHAR(20) UNIQUE NOT NULL,
  CHECK (min < max)
) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE table mecze(
  id INT(11) PRIMARY KEY auto_increment,
  tenisista1 INT(11) NOT NULL REFERENCES tenisisci,
  tenisista2 INT(11) NOT NULL REFERENCES tenisisci,
  zwyciezca INT(1) NOT NULL CHECK(zwyciezca in (1,2)),
  kat_wiek INT(11) NOT NULL REFERENCES kat_wiekowe,
  data_meczu DATE NOT NULL,
  CHECK (tenisista1 <> tenisista2)
) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;

INSERT INTO kluby (id, nazwa, ranking) VALUES (1, 'Wisla', 1);
INSERT INTO kluby (id, nazwa, ranking) VALUES (2, 'Legia', 2);

INSERT INTO tenisisci (id, nazwisko, waga, wzrost, klub) VALUES (1, 'Kowalski', 70, 176, 1);
INSERT INTO tenisisci (id, nazwisko, waga, wzrost, klub) VALUES (2, 'Nowak', 80, 180, 1);
INSERT INTO tenisisci (id, nazwisko, waga, wzrost, klub) VALUES (3, 'Malinowski', 78, 175, 2);
INSERT INTO tenisisci (id, nazwisko, waga, wzrost, klub) VALUES (4, 'Iksinski', 77, 177, 2);

INSERT INTO kat_wiekowe (id, min, max, nazwa) VALUES (1, 10, 16, 'juniorzy');
INSERT INTO kat_wiekowe (id, min, max, nazwa) VALUES (2, 17, 80, 'seniorzy');

INSERT INTO mecze (id, tenisista1, tenisista2, zwyciezca, kat_wiek, data_meczu) VALUES (1, 1, 3, 2, 2, '2009-10-28');
INSERT INTO mecze (id, tenisista1, tenisista2, zwyciezca, kat_wiek, data_meczu) VALUES (2, 2, 4, 1, 1, '2009-10-29');
