Duiklogboek: basis tabellen
Zoals in mijn vorige post vertelde ben ik bezig met het bouwen van mijn eigen duiklogboek. Stap 1 is denk ik de tabellen waar de data in op moet slaan.
Het grootste gedeelte van de tabellen heb ik al aangemaakt.
duiktabel, buddies, materiaal, weer, gebruik van flessen/consumptie, maar wat ik nog mis zijn duiklokaties en duikprofiel.
De duiktabel:
CREATE TABLE `divelog_dives`
(`id` INT UNSIGNED NOT NULL AUTO_INCREMENT
COMMENT 'systemid'
,`diveno` INT UNSIGNED NULL DEFAULT NULL
COMMENT 'dive number'
,`datetime` DATETIME NOT NULL
COMMENT 'date & time'
,`buddy1ID` INT UNSIGNED NOT NULL
COMMENT 'Buddy 1'
,`buddy2ID` INT UNSIGNED NULL DEFAULT NULL
COMMENT 'Buddy 2'
,`evenementID` INT UNSIGNED NULL DEFAULT NULL
COMMENT 'Dive part of evenement'
,`reason` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'reason to dive'
,`courseID` INT UNSIGNED NULL DEFAULT NULL
COMMENT 'diveCourse'
,`instructorID` INT UNSIGNED NULL DEFAULT NULL
COMMENT 'Instructor'
,`depthMax` FLOAT UNSIGNED NULL DEFAULT NULL
COMMENT 'Maximum depth'
,`depthAvg` FLOAT UNSIGNED NULL DEFAULT NULL
COMMENT 'Average depth'
,`diveTime` INT UNSIGNED NULL DEFAULT NULL
COMMENT 'Time spend under water'
,`bottomTime` INT UNSIGNED NULL DEFAULT NULL
COMMENT 'Time spend on the bottom'
,`diveTimeTotal` INT UNSIGNED NULL DEFAULT NULL
COMMENT 'Sum of time spend under water'
,`tempWater` INT UNSIGNED NULL DEFAULT NULL
COMMENT 'Temperature of the water'
,`tempAir` INT UNSIGNED NULL DEFAULT NULL
COMMENT 'Temperature of the air'
,`weatherID` INT UNSIGNED NULL DEFAULT NULL
COMMENT 'Type of weather'
,`visibility` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'Visibility under water'
,`regProfile` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0'
COMMENT 'Dive Profile present?'
,`regSightings` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0'
COMMENT 'Sightings registration?'
,`regMaterials` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0'
COMMENT 'Materials registration?'
,`regStages` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0'
COMMENT 'Extra Stages registration?'
,`description` LONGTEXT CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'Visibility under water'
,`picture0ID` INT UNSIGNED NULL DEFAULT NULL
COMMENT 'Main & mini picture'
,`picture1ID` INT UNSIGNED NULL DEFAULT NULL
COMMENT 'picture 2'
,`picture2ID` INT UNSIGNED NULL DEFAULT NULL
COMMENT 'picture 3'
,PRIMARY KEY (`id`)
,INDEX (`id`)
)
ENGINE = MyISAM COMMENT = 'divetable';
De tabel met duik metadata en de bij behorende koppeltabel:
CREATE TABLE `divelog_divemeta`
(`metaID` INT UNSIGNED NOT NULL AUTO_INCREMENT
COMMENT 'weatherID'
,`meta` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'meta'
,`description` VARCHAR(256) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'Description'
,PRIMARY KEY (`weatherID`)
,INDEX (`weatherID`)
)
ENGINE = MyISAM COMMENT = 'Metada dive';
CREATE TABLE `divelog_dive_divemeta`
(`diveID` INT UNSIGNED NOT NULL
COMMENT 'id to divetable'
,`metaID` INT UNSIGNED NOT NULL
COMMENT 'id to metatable'
,INDEX (`diveID`)
)
ENGINE = MyISAM COMMENT = 'connection table dive2clothing';
De tabel die kleding met duiken verbindt:
CREATE TABLE `divelog_dive_clothing`
(`diveID` INT UNSIGNED NOT NULL
COMMENT 'id to divetable'
,`clothingID` INT UNSIGNED NOT NULL
COMMENT 'id to clothingtable'
,INDEX (`diveID`)
)
ENGINE = MyISAM COMMENT = 'connection table dive2clothing';
De tabel met kleding:
CREATE TABLE `divelog_clothing`
(`clothingid` INT UNSIGNED NOT NULL AUTO_INCREMENT
COMMENT 'id'
,`description` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'describe the clothing'
,`symbol` INT UNSIGNED NULL DEFAULT NULL
COMMENT 'symbol of item'
,`equipmentID` INT UNSIGNED NOT NULL
COMMENT 'link to the equipment'
,PRIMARY KEY (`clothingid`)
,INDEX (`clothingid`)
)
ENGINE = MyISAM COMMENT = 'clothing';
De tabel waarin gebruikte flessen staan:
CREATE TABLE `divelog_gasconsumption`
(`consumptionid` INT UNSIGNED NOT NULL AUTO_INCREMENT
COMMENT 'id'
,`diveid` INT UNSIGNED NOT NULL
COMMENT 'id of the dive'
,`tankvolume` SMALLINT UNSIGNED NOT NULL
COMMENT 'Volume of the tank'
,`gasnumber` TINYINT UNSIGNED NOT NULL
COMMENT 'Number to define gas, 0 is always main'
,`oxygenPct` SMALLINT UNSIGNED NULL DEFAULT 21
COMMENT 'Percentage of oxygen'
,`heliumPct` SMALLINT UNSIGNED NULL DEFAULT 0
COMMENT 'Percentage of helium'
,`startPressure` INT UNSIGNED NULL DEFAULT 200
COMMENT 'Pressure at the start of the dive'
,`endPressure` INT UNSIGNED NULL DEFAULT NULL
COMMENT 'Pressure at the end of the dive'
,`description` INT UNSIGNED NULL DEFAULT NULL
COMMENT 'Description of the gas'
,`avgConsumption` FLOAT UNSIGNED NULL DEFAULT NULL
COMMENT 'Average consumption on the tank'
,PRIMARY KEY (`consumptionid`)
,KEY `consumptionid` (`consumptionid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='air consumption' AUTO_INCREMENT=1 ;
De tabel met de rest van de duikuitrusting:
CREATE TABLE `divelog_equipment`
(`equipmentid` int(10) unsigned NOT NULL auto_increment
COMMENT 'id',
`name` varchar(32) character set utf8 collate utf8_swedish_ci default NULL
COMMENT 'Name of the equipment',
`description` varchar(64) character set utf8 collate utf8_swedish_ci default NULL
COMMENT 'Description',
`purchased` datetime NOT NULL
COMMENT 'Date of purchase',
`lastService` datetime default NULL
COMMENT 'Date of last service',
`serviceCount` int(10) unsigned NOT NULL default '0'
COMMENT 'Number of services it got',
`sellDate` datetime default NULL
COMMENT 'Date when we sold/lost it',
`picture` int(10) unsigned default NULL
COMMENT 'Picture of the equipment',
`manualURL` varchar(64) character set utf8 collate utf8_swedish_ci default NULL
COMMENT 'Manual',
PRIMARY KEY (`equipmentid`),
KEY `equipmentid` (`equipmentid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
COMMENT='dive equipment' AUTO_INCREMENT=1 ;
De tabel met dingen die je onder wat kan zien:
CREATE TABLE `divelog_objects`
(`objectid` INT UNSIGNED NOT NULL AUTO_INCREMENT
COMMENT 'id'
,`name` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'Name of the objects'
,`nameAlt` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'Alternative name (like latin)'
,`category` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'Category'
,`picture` INT NULL DEFAULT NULL
COMMENT 'Picture of the object'
,`description` TEXT CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'Description'
,`infoURL` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'More information via URL'
,PRIMARY KEY (`objectid`)
,INDEX (`objectid`)
)
ENGINE = MyISAM COMMENT = 'dive objects';
De optie tabel waar voorkeuren in opgeslagen worden:
CREATE TABLE `divelog_options`
(`optionID` INT UNSIGNED NOT NULL AUTO_INCREMENT
COMMENT 'id'
,`name` VARCHAR(24) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'name'
,`value` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'value'
,PRIMARY KEY (`optionID`)
,INDEX (`optionID`)
)
ENGINE = MyISAM COMMENT = 'options-table';
De tabel met personen zoals buddies, instructeurs:
CREATE TABLE `divelog_people`
(`personID` INT UNSIGNED NOT NULL AUTO_INCREMENT
COMMENT 'PersonID'
,`lastname` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'Last name of person'
,`firstname` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'First name of person'
,`nickname` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'Nickname on forum/board'
,`displayname` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'Name to be displayed'
,`certificationID` INT UNSIGNED NULL DEFAULT NULL
COMMENT 'Certification of this person'
,`connection` VARCHAR(16) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'Connection to person'
,`picture` INT UNSIGNED NULL DEFAULT NULL
COMMENT 'Picture of person'
,`phone` VARCHAR(16) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'Phonenumber'
,`email` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'Emailaddres'
,`address` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'Address'
,`city` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'City'
,`zipcode` VARCHAR(8) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'Zip code'
,`userID` INT UNSIGNED NULL DEFAULT NULL
COMMENT 'Connected useraccount'
,`privacy` TINYINT(1) UNSIGNED NULL DEFAULT NULL
COMMENT 'Privacy level to show names'
,`lastupdate` DATETIME NOT NULL
COMMENT 'Last updated on'
,PRIMARY KEY (`personID`)
,INDEX (`personID`)
)
ENGINE = MyISAM COMMENT = 'connected people';
De tabel met de plaatjes/foto’s:
CREATE TABLE `divelog_pictures`
(`pictureID` INT UNSIGNED NOT NULL AUTO_INCREMENT
COMMENT 'pictureID'
,`description` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'description'
,`filename` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'filename'
,PRIMARY KEY (`pictureID`)
,INDEX (`pictureID`)
)
ENGINE = MyISAM COMMENT = 'pictures';
De tabel met tags en de connectie tabel om het aan duiken te koppelen:
CREATE TABLE `divelog_tags`
(`tagid` INT UNSIGNED NOT NULL AUTO_INCREMENT
COMMENT 'id'
,`tag` VARCHAR(16) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'tag'
,PRIMARY KEY (`tagid`)
,INDEX (`tagid`)
)
ENGINE = MyISAM COMMENT = 'tags in dives';
CREATE TABLE `divelog_dive_tags`
(`diveID` INT UNSIGNED NOT NULL
COMMENT 'id to divetable'
,`tagid` INT UNSIGNED NOT NULL
COMMENT 'id to clothingtable'
,INDEX (`diveID`)
)
ENGINE = MyISAM COMMENT = 'connection table dive2tags';
De tabel met de plaatjes/foto’s:
CREATE TABLE `divelog_pictures`
(`pictureID` INT UNSIGNED NOT NULL AUTO_INCREMENT
COMMENT 'pictureID'
,`description` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'description'
,`filename` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'filename'
,PRIMARY KEY (`pictureID`)
,INDEX (`pictureID`)
)
ENGINE = MyISAM COMMENT = 'pictures';
De tabel met gebruikers die kunnen inloggen op het logboek:
CREATE TABLE `divelog_users`
(`UID` mediumint(20) unsigned NOT NULL auto_increment
COMMENT 'unique ID'
,`login` varchar(60) NOT NULL default ''
COMMENT 'user login'
,`pass` varchar(64) NOT NULL default ''
COMMENT 'password'
,`rights` varchar(100) NOT NULL default ''
COMMENT 'user rights, 4 low, 0 high'
,`lastaccess` datetime NOT NULL default '0000-00-00 00:00:00'
COMMENT 'last access date/time'
,PRIMARY KEY (`UID`)
,KEY `user_login_key` (`login`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
De tabel met het weer:
CREATE TABLE `divelog_weather`
(`weatherID` INT UNSIGNED NOT NULL AUTO_INCREMENT
COMMENT 'weatherID'
,`description` VARCHAR(48) CHARACTER SET utf8 COLLATE utf8_swedish_ci NULL
COMMENT 'Description of the weather'
,PRIMARY KEY (`weatherID`)
,INDEX (`weatherID`)
)
ENGINE = MyISAM COMMENT = 'Weather';







