Cita: Me aclaraste en grande mis dudas, pero tengo otra, eh leido algo de tamaños, es verdad que el OID permite llevar una secuencia de mas registros que cuando se usa el SERIAL?, y tambien ¿ es verdad que el OID si no se le coloca una condicion puede llegar a repetir datos?
En cuanto a tu primera pregunta...
Cuando declaras un campo serial (En realidad serial no es un tipo de dato) sino una representación de una acción que toma el campo. Realmente lo que hace es declarar un campo entero e implicitamente, crear una secuencia que es añadida como valor por defecto.
Mirar ejemplo:
Código SQL:
Ver originalpruebas=> CREATE TABLE prueba_serial(contador SERIAL);
NOTICE: CREATE TABLE will CREATE implicit SEQUENCE "prueba_serial_contador_seq" FOR serial COLUMN "
prueba_serial.contador"
CREATE TABLE
pruebas=> \d prueba_serial;
Tabla ½public.prueba_serial╗
Columna | Tipo | Modificadores
----------+---------+------------------------------------------------------------------
contador | INTEGER | NOT NULL DEFAULT NEXTVAL('prueba_serial_contador_seq'::regclass)
El rango que soporta un tipo de dato integer que te soporta hasta 2147483647. Si consideras que es un numero muy pequeño, puedes declararlo con bigserial que hace lo mismo que te dije anteriormente, pero no pone el campo como integer, sino como bigint. El bigint va hasta 9223372036854775807.
En conclusión, Sin importar si con OID permita llevar mas secuencias, creo que nunca nos veremos limitados por el uso de tipo de datos serial.
Segunda pregunta...
La verdad, no soy experto en el tema, pero alguna vez leí que si se pueden presentar datos repetidos, siempre y cuando no sean del mismo objeto. Lo de la condición, la verdad no se.
saludos y espero haberte ayudado