2010-10-01 6 views
0

Pourrais-je avoir quelques opinions sur cette structure de table MySQL s'il vous plaît?
La quantité de champs varchar est-elle incorrecte? Y a-t-il de meilleures alternatives?MySQL Table Structure

Le type de données devrait être assez explicite.

CREATE TABLE `users` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `active` bit(1) NOT NULL DEFAULT b'1', 
    `email` varchar(64) NOT NULL, 
    `password` char(128) NOT NULL, 
    `forename` varchar(32) NOT NULL, 
    `surname` varchar(32) NOT NULL, 
    `ip` int(10) unsigned NOT NULL, 
    `address` varchar(32) NOT NULL, 
    `address_2` varchar(32) DEFAULT NULL, 
    `city` varchar(32) NOT NULL, 
    `county` varchar(32) NOT NULL, 
    `postcode` varchar(16) NOT NULL, 
    `country` char(2) NOT NULL, 
    `country_other` varchar(16) DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    KEY `email` (`email`), 
    KEY `password` (`password`) 
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; 

Merci!

+0

Est-il possible que les gens aient plus d'une adresse? Vous pourriez penser à normaliser un peu plus et à diviser les adresses dans une table séparée. En termes de nombre de champs varchar, il n'y a rien de mal avec eux. Je ne sais pas pourquoi votre champ IP est un Int. pourrait vouloir en faire un varchar (15) – Sage

+1

@Sage - J'allais stocker IP en utilisant la fonction 'INET_ATON()', d'où l'entier non signé. Non, jamais possible qu'il y aura plus d'une adresse. – chigley

+0

ahh, plutôt cool. Je n'avais pas vu cette fonction auparavant. Quelque chose appris – Sage

Répondre

1

Vous pouvez essayer d'utiliser text dans varchar dans les champs d'adresse, éventuellement celui de l'email. J'ai lu quelques problèmes sur les symboles (@) dans le champ varchar. Avec text vous n'avez pas besoin de définir une taille autant que je sache.

+1

L'utilisation de colonnes de texte pourrait imposer d'autres problèmes. Je sais que dans SQL Server, les données de colonne de texte sont stockées hors ligne. – Sage

+0

Merci pour les heads up! – mastofact