elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Duda a la hora de hacer una restricción
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda a la hora de hacer una restricción  (Leído 4,616 veces)
Magnumrace

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Duda a la hora de hacer una restricción
« en: 11 Junio 2021, 20:16 pm »

Estoy creando una tabla y me he quedado en uno de los requisitos que me piden que es el siguiente:

El atributo carrera almacenará la inicial de la misma en mayuscula: (I)nformatica, (F)armacia, (D)erecho, etc.

Estoy creando la tabla alumno con sus atributos, tipo de datos etc. pero a la hora de crear el atributo carrera con esas restricciones me quedo en blanco, sé que puedo sacar la primera letra en mayuscula con substring pero no sé como aplicarlo para cada carrera.

Yo lo tengo pensado así:
(SQL Server)

Código
  1. Carrera VARCHAR(10) NOT NULL CONSTRAINT ck_carrera (CHECK IN (SUBSTRING ([nombre], 1, 1))


En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: Duda a la hora de hacer una restricción
« Respuesta #1 en: 11 Junio 2021, 22:39 pm »

declaralo de tipo byte... obtienes la letra adecuada, la conviertes a mayúsculas y luego tomas el valor ASCII de la misma. Cuando insertes una asignatura, comprueba que no exista ya, si existe elige otra letra... un ejemplo:
(D)erecho, (M)atemáticas, Medici(N)a

Aunque si las asignaturas fueran constantes (introducidas todas inicialmente cuando creas la tabla), quedaría más sencillo pues puedes elegir antes que letras.

Técnicamente una tabla 'tblAsignaturas' debiera tener 2 campos, Id (primary key) y Asiganutura (varchar(40)), y opcionalmente otro campo Descripción...
Esto te permitiría tener por ejemplo tener Medicina I, Medicina II,  Medicina III, o Medicina nuclear... ahora si te han pedido expresamente una inicial, puedes hacerlo como te acabo de describir y crear un campo Abreviatura... aunque lo correcto es tener una tabla Asginaturas y tirar de Id para su identificación... pero si no te dejan crear una tabla asignaturas, técnicamente es... una chapuza.

p.d.: donde he puesto Asignatura, da igual que sea Carrera... no cambia más que el ejemplo.


« Última modificación: 11 Junio 2021, 22:42 pm por Serapis » En línea

Magnumrace

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Duda a la hora de hacer una restricción
« Respuesta #2 en: 11 Junio 2021, 23:11 pm »

declaralo de tipo byte... obtienes la letra adecuada, la conviertes a mayúsculas y luego tomas el valor ASCII de la misma. Cuando insertes una asignatura, comprueba que no exista ya, si existe elige otra letra... un ejemplo:
(D)erecho, (M)atemáticas, Medici(N)a

Aunque si las asignaturas fueran constantes (introducidas todas inicialmente cuando creas la tabla), quedaría más sencillo pues puedes elegir antes que letras.

Técnicamente una tabla 'tblAsignaturas' debiera tener 2 campos, Id (primary key) y Asiganutura (varchar(40)), y opcionalmente otro campo Descripción...
Esto te permitiría tener por ejemplo tener Medicina I, Medicina II,  Medicina III, o Medicina nuclear... ahora si te han pedido expresamente una inicial, puedes hacerlo como te acabo de describir y crear un campo Abreviatura... aunque lo correcto es tener una tabla Asginaturas y tirar de Id para su identificación... pero si no te dejan crear una tabla asignaturas, técnicamente es... una chapuza.

p.d.: donde he puesto Asignatura, da igual que sea Carrera... no cambia más que el ejemplo.

Pero puedo hacerlo de la manera como lo hago? O algo parecido? Que cuando la ponga carrera Informática solo tome la primera letra que en este caso es la letra I.

Sin irnos a tal extremo que podría repetirse la misma letra
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: Duda a la hora de hacer una restricción
« Respuesta #3 en: 11 Junio 2021, 23:36 pm »

Sí, si el dato es solo de consulta (y se asigna cuando se crea el usuario)...
Ahora, por qué usar un varchar(10) si sabes a propósito que su tamaño será fijo a 1 carácter?.
En línea

Magnumrace

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Duda a la hora de hacer una restricción
« Respuesta #4 en: 12 Junio 2021, 14:36 pm »

Sí, si el dato es solo de consulta (y se asigna cuando se crea el usuario)...
Ahora, por qué usar un varchar(10) si sabes a propósito que su tamaño será fijo a 1 carácter?.


Tienes razón en lo que me dices. Había pensado en varchar (10) porque iba a tomar la palabra completa y de ahí mismo una letra. O sea que tengo que poner como tipo de dato Char no?
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
que me puede estar saliendo mal a la hora de hacer injection sql
Nivel Web
RedZer 9 5,119 Último mensaje 28 Diciembre 2010, 04:06 am
por Darioxhcx
Es posible hacer que el pc se prenda a cierta hora?
Java
klaine 6 4,596 Último mensaje 14 Diciembre 2011, 10:59 am
por Norlak
13 Cosas que deberías hacer en tu hora de Almuerzo
Foro Libre
Graphixx 0 2,044 Último mensaje 23 Noviembre 2013, 08:35 am
por Graphixx
(Python 3.5) Hacer una accion a una determinada hora
Scripting
BigKaz 5 4,309 Último mensaje 10 Diciembre 2016, 19:01 pm
por antkk
Problema a la hora de hacer deploy en Now con un servidor de ExpressJS
Desarrollo Web
Ali Baba 0 1,647 Último mensaje 24 Septiembre 2019, 04:47 am
por Ali Baba
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines