Ferreteria/sql/user client: Difference between revisions
< Ferreteria | sql
Jump to navigation
Jump to search
(er, correction...) |
(CRC back to unsigned) |
||
Line 10: | Line 10: | ||
** '''2013-11-09''' Renamed from '''shop_client''' to '''user_client''' | ** '''2013-11-09''' Renamed from '''shop_client''' to '''user_client''' | ||
** '''2014-09-18''' ''Really'' renamed '''user_client'''; removed unwanted DROP TABLE statement. | ** '''2014-09-18''' ''Really'' renamed '''user_client'''; removed unwanted DROP TABLE statement. | ||
** '''2015-06-08''' Changed CRC back to UNSIGNED, because otherwise it refuses to add large values | |||
*** [http://php.net/manual/en/function.crc32.php crc32()] can return negative numbers on 32-bit systems, but not on 64-bit. | |||
*** Use [http://php.net/manual/en/function.sprintf.php sprintf('%u',$CRC)] to ensure unsigned string for SQL insertion. | |||
==SQL== | ==SQL== | ||
<mysql>CREATE TABLE `user_client` ( | <mysql>CREATE TABLE `user_client` ( | ||
`ID` INT | `ID` INT NOT NULL AUTO_INCREMENT, | ||
`CRC` INT | `CRC` INT UNSIGNED NOT NULL COMMENT "crc32(Address+Browser) - unique integer defined by client specs", | ||
`Address` VARCHAR(15) NOT NULL COMMENT "IP address of client", | `Address` VARCHAR(15) NOT NULL COMMENT "IP address of client", | ||
`Domain` VARCHAR(255) | `Domain` VARCHAR(255) COMMENT "Domain name of client", | ||
`Browser` VARCHAR(255) | `Browser` VARCHAR(255) COMMENT "Browser USER_AGENT string", | ||
`WhenFirst` DATETIME | `WhenFirst` DATETIME NOT NULL COMMENT "When this client was first seen", | ||
`WhenFinal` DATETIME | `WhenFinal` DATETIME COMMENT "When this client was most recently seen", | ||
PRIMARY KEY(`ID`), | PRIMARY KEY(`ID`), | ||
UNIQUE KEY(`CRC`) | UNIQUE KEY(`CRC`) | ||
) ENGINE = MYISAM;</mysql> | ) ENGINE = MYISAM;</mysql> |
Revision as of 02:34, 9 June 2015
About
- Status: working / tested / debugged
- Fields
- CRC: checksum uniquely identifying user's IP address and browser client software. See notes.
- Notes:
- For identifying the user, decided to use CRC32 instead of compression because the compressed strings always came out at least as long as the original string. They were probably designed to be effective for rather longer data.
- History:
- 2009-06-16 Changing name to singular
- 2009-09-11 CRC comes out negative sometimes, so making this SIGNED
- 2013-11-09 Renamed from shop_client to user_client
- 2014-09-18 Really renamed user_client; removed unwanted DROP TABLE statement.
- 2015-06-08 Changed CRC back to UNSIGNED, because otherwise it refuses to add large values
- crc32() can return negative numbers on 32-bit systems, but not on 64-bit.
- Use sprintf('%u',$CRC) to ensure unsigned string for SQL insertion.
SQL
<mysql>CREATE TABLE `user_client` (
`ID` INT NOT NULL AUTO_INCREMENT, `CRC` INT UNSIGNED NOT NULL COMMENT "crc32(Address+Browser) - unique integer defined by client specs", `Address` VARCHAR(15) NOT NULL COMMENT "IP address of client", `Domain` VARCHAR(255) COMMENT "Domain name of client", `Browser` VARCHAR(255) COMMENT "Browser USER_AGENT string", `WhenFirst` DATETIME NOT NULL COMMENT "When this client was first seen", `WhenFinal` DATETIME COMMENT "When this client was most recently seen", PRIMARY KEY(`ID`), UNIQUE KEY(`CRC`) ) ENGINE = MYISAM;</mysql>