Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Yep, got 'em. Thanks!

Author: Mark Boylan

Date: 20:53:40 03/03/06

Go up one level in this thread


On March 03, 2006 at 21:51:14, Dann Corbit wrote:

>Since you're a database guy, I would be keenly interested in any feedback or new
>ideas for improvements.
>
>The generated SQL script is for SQL*Server, but I can use ERWin to target lots
>of others.  Probably something more ANSI using nothing but declarative RI would
>be better.


Dann,

I just looked at your diagram. It's pretty good. I wouldn't break out version
from engine unless you think that someone might like to a query like "all
evaluations from engines at version 3."  I combined them, but if you want to
break them out, I'd do it the opposite way, so the name is abstracted and the
version is specific.

Other than that I think it's pretty good. I dropped the PositionStatistic table,
but only because it looked like it needed a relationship to another table that
wasn't in the diagram.

I renamed a few table to be more specific. For instance Your EngineAuthor became
Author, AuthorList became EngineAuthor and I added a BookAuthor.

You'll notice that I slid a few fields around. For instance, the hash table size
is not a property of the machine, but of the analysis. Machines have the option
of changing hash table sizes at will while retaining identity.

Other than that, it's good. But can you explain what bm, er, pm, am & ce mean?
Im not sure what those are.

Here's the DDL. It think it's ANSI, but let me know if you have problems running
it. I can also make a diagram if you want.  Just let me know.


create table country (
  country_id int not null primary key,
  country_name varchar(255),
  country_abbr varchar(8)
);

create table author (
  author_id int not null primary key,
  country_id int not null references country,
  first_name varchar(255) null,
  middle_name varchar(255) null,
  last_name varchar(255) not null,
  title varchar(255) null
);

create table engine (
  engine_id int not null primary key,
  engine_name varchar(255) not null,
  engine_version varchar(255)
);

create table engine_author (
  engine_id int not null references engine(engine_id),
  author_id int not null references author(author_id),
  primary key (engine_id, author_id)
);

create table book (
  book_id int not null primary key,
  book_name varchar(255) not null,
  isbn varchar(20),
  lccn varchar(20),
  upc varchar(20)
);

create table book_author (
  book_id int not null references book(book_id),
  author_id int not null references author(author_id),
  primary key (book_id, author_id)
);

create table position (
  position_id int not null primary key,
  position_fen varchar(255)
);

create table host (
  host_id int not null primary key,
  hostname varchar(255) not null,
  cpu_vendor varchar(50),
  cpu_model varchar(50),
  cpu_id_name varchar(50),
  cpu_id_sig char(4),
  ram int
);

create table evaluation (
  position_id int not null references position(position_id),
  engine_id int not null references engine(engine_id),
  host_id int not null references host(host_id),
  hash_size int,
  flags int,
  centipawns int,
  depth int,
  bm char(8),
  er char(8),
  pm char(8),
  am char(8),
  nodes float,
  seconds int,
  primary key (position_id, engine_id, host_id)
);

create table opinion (
  position_id int not null references position(position_id),
  book_id int not null references book(book_id),
  NAG varchar(20),
  ce int,
  bm char(8),
  er char(8),
  pm char(8),
  am char(8),
  primary key (position_id, book_id)
);









This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.