[MySQL]Tipos y atributos para guardar e-mail

Iniciado por Skeletron, 3 Agosto 2009, 03:22 AM

0 Miembros y 1 Visitante están viendo este tema.

Skeletron

Hola señores..
Estoy haciendo una base de datos, en ella se guardaran e-mails y la identificacion del e-mail(numerica auto creciente)..
Es simplemente para los que quieran suscribirse a noticias de mi web...

Soy muy novato con MySQL y bases de datos..

Mi pregunta es:
El campo a guardar el e-mail, tiene que ser un VARCHAR??? de 30 caracteres es basta no?
Tiene que ir algun atributo? indice?? algo?

[u]nsigned

Bueno, el ID (auto increment) lo tendrias que usar como PRIMARY KEY, y campo donde se guardan lo mails como UNIQUE para que no existan dos repetidos. Podría ser un varchar de 80 a 120 caracteres. Considera que un campo tipo VARCHAR ocupa la longitud definida en la BBDD mas 1 byte. Uno varchar(120) ocuparía 121 bytes.

También podes poner ambos campos como NOT NULL para que no puedan estar vacios.

Saludos

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

Skeletron

Quien va a tener un e-mail de 80 caracteres??
No será mucho???


No encuentro ningun NOT NULL...
Estoy con PHPMyAdmin

Pablo Videla

Código (sql) [Seleccionar]


Create table mail(id number auto_increment, mail varchar(150) not null,
CONSTRAINT pk_mail PRIMARY KEY(id))

[u]nsigned

Que versión de phpMyAdmin usas?

Te tiene que aparecer como NULO en caso de que lo tengas en español.  :rolleyes:



Código (sql) [Seleccionar]
CREATE TABLE IF NOT EXISTS `registrados` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `mail` varchar(80) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `mail` (`mail`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1


Donde 'registrados' sería el nombre de la tabla.
Para salir del paso hace esto: Guarda ese codigo como registrados.sql, metete a la base de datos que usas (creas una si no tenes), anda a importar (por la pestaña de arriba) y haces click en el boton "Seleccionar archivo" y elejis el que create recién. y le das a "continuar". Así te queda la tabla hecha.

Lo ideal seria que te leas algún tuto de PHP+MySQL  ;)

Saludos

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!


Skeletron

Perfecto..
Lo que creé está exactamente igual..

A diferencia que mail tiene: varchar(32)
No 80..
si alguien coloca un e-mail de 10 caracteres, ocupará la misma cantidad de espacio tanto en maximo 80 como en maximo 32??

[u]nsigned

Cita de: Skeletron en  3 Agosto 2009, 04:35 AM
Perfecto..
Lo que creé está exactamente igual..

A diferencia que mail tiene: varchar(32)
No 80..
si alguien coloca un e-mail de 10 caracteres, ocupará la misma cantidad de espacio tanto en maximo 80 como en maximo 32??

Ocupara 11.

La longitud es variable hasta el máximo dado. Y ocupa un byte mas, porque ese byte es usado para guardar la longitud de dicha cadena.

Otra cosa...el ususario puede ingresar lo que quiera en un textbox, pero de ahi a lo que se ingrese a SQL depende de vos. Digo esto porque deberias usar algun mecanismo anti inyeccionen SQL.  ;)

Saludos

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

SnakeDrak

Hola,

Si vas a tener muchas filas indexadas en un varchar, te recomiendo usar char que indexa mejor aunque gaste más espacio (hoy día con los HD existentes no hay problemas en eso), el proceso de consulta a un char es mucho mayor que a un varchar, ya que si tienes un CHAR 20 será siempre de 20 de logintud mientras que el varchar varía según la cadena que contenga.

Sin duda yo recomiendo usar CHAR, procesa más rápido las consultas y con los HD de hoy día dudo que el espacio sea un problema.

Yo por ejemplo tengo unas tablas con 500 000 000 de filas y noté mucho la rapidez de las consultas al utilizar CHAR.

Saludos!

Skeletron

Alguien mas opina lo que dijoSnakeDrak???
Algunas sentencias cambian al cambiar ello???

Realmente necesito muchhhaaa velocidad...