http://prezi.com/njh8fljisvxb/?utm_campaign=share&utm_medium=copy&rc=ex0share
domingo, 24 de noviembre de 2013
miércoles, 6 de noviembre de 2013
lunes, 4 de noviembre de 2013
Practica1 SQL Server
Creacion de la tabla
CREATE TABLE [dbo].[Persona](
[IdPersona] [int] NOT NULL,
[PersonaNombre] [varchar](60) NOT NULL,
[PersonaApellido] [varchar](60) NULL,
[FechaNacimiento] [date] NOT NULL,
[CURP] [varchar](13) NULL,
[PersonaDomicilio] [varchar](150) NULL,
CONSTRAINT [PK_Persona] PRIMARY KEY CLUSTERED
(
[IdPersona] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
[IdPersona] [int] NOT NULL,
[PersonaNombre] [varchar](60) NOT NULL,
[PersonaApellido] [varchar](60) NULL,
[FechaNacimiento] [date] NOT NULL,
[CURP] [varchar](13) NULL,
[PersonaDomicilio] [varchar](150) NULL,
CONSTRAINT [PK_Persona] PRIMARY KEY CLUSTERED
(
[IdPersona] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Insercion de datos
consultas
Funciones Agregadas
Creacion de Vistas
Vista
1
CREATE
VIEW [dbo].[PersonaFecha]
AS
SELECT TOP (100) PERCENT IdPersona, PersonaApellido, FechaNacimiento, PersonaDomicilio
FROM dbo.Persona
ORDER BY PersonaApellido
GO
Vista 2
CREATE
VIEW [dbo].[PersonaCURP]
AS
SELECT PersonaNombre, CURP, PersonaApellido
FROM dbo.Persona
GO
Vista 3
CREATE
VIEW [dbo].[ListaPersona]
AS
SELECT TOP (100) PERCENT IdPersona AS id, PersonaNombre AS nombre, PersonaApellido AS apellido
FROM dbo.Persona
ORDER
BY id
GO
sábado, 2 de noviembre de 2013
Podcast grabado
por medio del link se podrá escuchar el audio guardado.
https://drive.google.com/file/d/0B73CezBVtlTNS1dFYUo2N1VpUFE/edit?usp=sharing
https://drive.google.com/file/d/0B73CezBVtlTNS1dFYUo2N1VpUFE/edit?usp=sharing
domingo, 27 de octubre de 2013
Proyecto Final
Acá se encuentra la dirección del diccionario de datos y del diagrama E-R del proyecto final.
https://drive.google.com/file/d/0B73CezBVtlTNNTJyYmRXZlpUMG8/edit?usp=sharing
https://drive.google.com/file/d/0B73CezBVtlTNaVhGc0loWW94T2s/edit?usp=sharing
https://drive.google.com/file/d/0B73CezBVtlTNNTJyYmRXZlpUMG8/edit?usp=sharing
https://drive.google.com/file/d/0B73CezBVtlTNaVhGc0loWW94T2s/edit?usp=sharing
viernes, 18 de octubre de 2013
Vistas es Oracle
Vistas verticales.
Otro uso habitual de las vistas es restringir el acceso de un usuario a
sólo ciertas columnas de una tabla.
Vistas horizontales.
Un uso de las vistas es restringir el acceso de un usuario a un
conjunto de filas seleccionadas de una tabla
Vistas en SQL:
SQL> CREATE VIEW
VempleadosVentas AS
2
SELECT e.nombre,e.apellido, p.*
3 FROM empleados e
4 JOIN pedidos p ON
p.atendido_por=e.codigo_empleado;
Vista creada.
SQL> CREATE VIEW VentasDiarias AS
2 SELECT
p.fecha_pedido, SUM(d.precio_unitario*d.cantidad*(1-d.descuento))
as "monto vendido"
3 FROM pedidos p
4 JOIN detalles_del_pedido d ON
p.pedido_id=d.pedido_id
5 GROUP BY fecha_pedido;
Vista creada.
SQL> CREATE VIEW UnidadesPorPedido AS
2 SELECT pedido_id, SUM(cantidad) as
"productos por pedido"
3 FROM detalles_del_pedido
4 GROUP BY pedido_id;
Vista creada.
SQL> CREATE VIEW InformacionPedido AS
2 SELECT d.precio_unitario as preciocobrado,
3 d.producto_id,
4 p.nombre_producto,
5 p.precio_unitario as preciolista
6 FROM productos p
7 JOIN detalles_del_pedido d ON p.codigo_producto=d.producto_id;
Vista creada.
SQL> CREATE VIEW PedidosDetallados AS
2 SELECT d.*,p.nombre_producto,p.nombre_latin
,c.*
3 FROM productos p
4 JOIN detalles_del_pedido d ON p.codigo_producto=d.producto_id
5 JOIN categorias c ON c.nombre_categoria=p.categoria;
Vista creada.
lunes, 14 de octubre de 2013
Actividad 14 de Octubre
Ricardo Toledo / Genaro Bergero
FUNCIONES AGREGADAS
SUM- Ofrece la Sumatoria de la columna que sea puesta dentro del parentesis.
AVG- Ofrece el promedio numerico de la columna que sea puesta dentro del parentesis.
MIN,MAX- Ofrece el minimo y el maximo valor de la columa o columnas especificadas.
ORDER BY- Ordena la consulta por el campo que se le especifique en orden ascendente ASC o descendente segun sea el caso con DESC.
GROUP BY- Agrupa las funciones agregadas por el campo especificado sin repetir.
COUNT- Devuelve la cuenta de los valores no nulos del campo especificado.
VSIZE- Devuelve el tamaño en bytes de cada registro del campo especificado.
ROWNUM<X- Devuelve X-1filas
VARIANCE- Retorna la varianza de un campo
STDDEV- Devuelve el desvio estandar
FUNCIONES AGREGADAS
SUM- Ofrece la Sumatoria de la columna que sea puesta dentro del parentesis.
AVG- Ofrece el promedio numerico de la columna que sea puesta dentro del parentesis.
MIN,MAX- Ofrece el minimo y el maximo valor de la columa o columnas especificadas.
ORDER BY- Ordena la consulta por el campo que se le especifique en orden ascendente ASC o descendente segun sea el caso con DESC.
GROUP BY- Agrupa las funciones agregadas por el campo especificado sin repetir.
COUNT- Devuelve la cuenta de los valores no nulos del campo especificado.
VSIZE- Devuelve el tamaño en bytes de cada registro del campo especificado.
ROWNUM<X- Devuelve X-1filas
VARIANCE- Retorna la varianza de un campo
STDDEV- Devuelve el desvio estandar
sábado, 5 de octubre de 2013
Inserción de datos y busqueda en BD jardineria
CLIENTES
SQL> INSERT INTO CLIENTE (nombre,apellido,direccion,localidad,region,codigo_post
al,pais,telefono,codigo_cliente) values('Pilar','Ackerman','8808 Backbay Street'
,'Bellevue','WA','88004','EE.UU.',4255550194,01);
1 fila creada.
SQL> INSERT INTO CLIENTE (nombre,apellido,direccion,localidad,region,codigo_post
al,pais,telefono,codigo_cliente) values('Chris','Ashton','89 Cedar Way','Redmond
','WA','88052','EE.UU.',4255550191,04);
1 fila creada.
SQL> INSERT INTO CLIENTE (nombre,apellido,direccion,localidad,region,codigo_post
al,pais,telefono,codigo_cliente) values('Terry','Adams','1932 52nd Ave','Vancouv
er','BC',419,'Canada',6045550193,02);
1 fila creada.
SQL> INSERT INTO CLIENTE (nombre,apellido,direccion,localidad,region,codigo_post
al,pais,telefono,codigo_cliente) values('Michael','Allen','130 17th St.','Vancou
ver','BC',419,'Canada',6045550192,03);
1 fila creada.
EMPLEADOS
SQL> insert into empleados (nombre,apellido,puesto,direccion,localidad,estado,co
digo_postal,telefono,fecha_de_nacimiento,fecha_de_contratacion,codigo_empleado)
values('Karen','Berg','Propietario','765-20th Ave.E.','Seatle','WA',88102,555010
0,TO_DATE('12/8/1968','MM-DD-YY'), TO_DATE('5/1/2008','MM-DD-YY'), 001);
1 fila creada.
SQL> insert into empleados (nombre,apellido,puesto,direccion,localidad,estado,co
digo_postal,telefono,fecha_de_nacimiento,fecha_de_contratacion,codigo_empleado)
values ('Kim','Arkers','Jefe de compras','890 NE 87th Dr.','Seatle','WA',88125,
5550101, TO_DATE('2/19/1973','MM-DD-YY'), TO_DATE('6/1/2008','MM-DD-YY'),002);
1 fila creada.
SQL> insert into empleados (nombre,apellido,puesto,direccion,localidad,estado,co
digo_postal,telefono,fecha_de_nacimiento,fecha_de_contratacion,codigo_empleado)
values('Tom','O neill','Asistente','789 Moss Bay Blvd.','Kirkland','WA',88033,55
50102, TO_DATE('8/30/1988','MM-DD-YY'), TO_DATE('11/2/2008','MM-DD-YY'),003);
1 fila creada.
SQL> insert into empleados (nombre,apellido,puesto,direccion,localidad,estado,co
digo_postal,telefono,fecha_de_nacimiento,fecha_de_contratacion,codigo_empleado)
values('Naoki','Sato','Jefe de ventas','123 leary wy.','Seatle','WA',88117,55501
03, TO_DATE('9/19/1976','MM-DD-YY'), TO_DATE('8/14/2009','MM-DD-YY'),004);
1 fila creada.
SQL> insert into empleados (nombre,apellido,puesto,direccion,localidad,estado,co
digo_postal,telefono,fecha_de_nacimiento,fecha_de_contratacion,codigo_empleado)
values('Molly','Dempsey','jardinero','432 pike st.','Seatle','WA',88119,5550104,
TO_DATE('3/4/1983','MM-DD-YY'), TO_DATE('10/17/2009','MM-DD-YY'),005);
1 fila creada.
PROVEEDORES
SQL> Insert into proveedores values('oh rayos','franchesca','repartidor','Aconca
gua 1294','Jalisco',26945,32145689,289710,2);
1 fila creada.
SQL> Insert into proveedores values('rajas','pancho do','gerencia','fresno 2000'
,'Jalisco',26945,7896453215,546519,1);
1 fila creada.
SQL> Insert into proveedores values('inverrosa','marcos','secretario','Revolucio
n','Jalisco',26945,0325874,369425,3);
1 fila creada.
CATEGORIAS
SQL> Insert into categorias values('bulbos','primavera,verano y otoño, floración
forzada',1);
1 fila creada.
SQL> Insert into categorias values('cactus','cactus del interior',2);
1 fila creada.
SQL> Insert into categorias values('cespedes','cespedes para climas frios',4);
1 fila creada.
SQL> Insert into categorias values('flores','amplia variedad de flores',5);
1 fila creada.
SQL> Insert into categorias values('cubiertas veget','perennes herbáceas, hiedra
s, enredaderas, musgos',3);
1 fila creada.
TRANSPORTISTAS
SQL> Insert into transportistas values('daniel´s transport','daniel fernandez','
25 hersilla','Juarez','Colima',25869,25413682,1);
1 fila creada.
SQL> Insert into transportistas values('transportes ramon','francisco salomon','
250 rosaltino','Juarez','Colima',25869,2596481,2);
1 fila creada.
SQL> Insert into transportistas values('transp. Raul','Raul roman','684 numbata'
,'Oblatos','Colima',6759,96485321,3);
1 fila creada.
PRODUCTOS
SQL> Insert into productos values('lirio magico','lycoris squamigera',2,'bulbos'
,12,48.40,40,0,10,0,1);
1 fila creada.
SQL> Insert into productos values('azafran de otoño','colchicum',2,'bulbos',12,2
2.69,37,0,10,0,2);
1 fila creada.
SQL> Insert into productos values('forsitia','Forsythia suspensa',3,'cespedes',1
,18.00,3,0,1,0,5);
1 fila creada.
SQL> Insert into productos values('cubo de abono','',1,'cespedes',30,58.00,13,0,
10,0,3);
1 fila creada.
SQL> Insert into productos values('tierra para cactus','',3,'cespedes',2,4.50,12
,0,5,0,4);
1 fila creada.
PEDIDOS
SQL> Insert into pedidos values (TO_DATE('17/08/12','DD-MM-YY'), TO_DATE ('19/09
/12','DD-MM-YY'),'DHL',03, TO_DATE ('17/09/12','DD-MM-YY'),1,2,3);
1 fila creada.
SQL> Insert into pedidos values (TO_DATE ('16/08/12','DD-MM-YY'), TO_DATE ('30/0
9/12','DD-MM-YY'),'DHL',1, TO_DATE ('17/09/12','DD-MM-YY'),2,1,1);
1 fila creada.
SQL> Insert into pedidos values (TO_DATE ('10/08/12','DD-MM-YY'), TO_DATE ('5/10
/12','DD-MM-YY'),'OCA',1, TO_DATE ('17/09/12','DD-MM-YY'),3,2,1);
1 fila creada.
DETALLES_DEL_PEDIDO
SQL> Insert into detalles_del_pedido values(58.00,1,0.00,1,1,3);
1 fila creada.
SQL> Insert into detalles_del_pedido values(62.50,1,0.00,2,1,2);
1 fila creada.
SQL> Insert into detalles_del_pedido values(18.75,1,0.00,3,2,4);
1 fila creada.
SQL> Insert into detalles_del_pedido values(24.00,2,0.10,4,2,1);
1 fila creada.
SQL> Insert into detalles_del_pedido values(27.00,1,0.00,5,3,5);
1 fila creada.
SECCION BUSQUEDA 1
SQL> select codigo_producto,nombre_producto,categoria from productos;
CODIGO_PRODUCTO NOMBRE_PRODUCTO CATEGORIA
--------------- -------------------- ---------------
1 lirio magico bulbos
2 azafran de otoño bulbos
5 forsitia cespedes
3 cubo de abono cespedes
4 tierra para cactus cespedes
BUSQUEDA 2
SQL> select codigo_cliente, nombre, apellido, direccion from cliente where nombre='Michael';
CODIGO_CLIENTE NOMBRE APELLIDO DIRECCION
-------------- -------------------- -------------------- --------------------------------------------------
3 Michael Allen 130 17th St.
CONSULTA 3
SQL> select pedidos.fecha_pedido, pedidos.pedido_id,transportistas.compania from
pedidos,transportistas where transportistas.codigo_transportista=pedidos.transp
ortado_por;
FECHA_PE PEDIDO_ID COMPANIA
-------- ---------- ------------------------------
17/08/12 1 transportes ramon
16/08/12 2 daniel´s transport
10/08/12 3 transportes ramon
CONSULTA 4
SQL> select detalles_del_pedido.precio_unitario as preciocobrado,detalles_del_pe
dido.producto_id,productos.nombre_producto,productos.precio_unitario as precioli
sta from productos, detalles_del_pedido where
2 productos.codigo_producto=detalles_del_pedido.producto_id AND
3 detalles_del_pedido.pedido_id=2;
PRECIOCOBRADO PRODUCTO_ID NOMBRE_PRODUCTO PRECIOLISTA
------------- ----------- -------------------- -----------
18,75 4 tierra para cactus 4,5
24 1 lirio magico 48,4
CONSULTA 5
SQL> select pedido_id, nombre , apellido , puesto from pedidos,empleados where
2 codigo_empleado=atendido_por AND
3 pedido_id=1;
PEDIDO_ID NOMBRE APELLIDO PUESTO
---------- -------------------- -------------------- ------------------------------
1 Tom O neill Asistente
CONSULTA 6
SQL> select nombre_producto, nombre_categoria,descripcion from productos,categor
ias
2 where categoria=nombre_categoria;
NOMBRE_PRODUCTO NOMBRE_CATEGORI DESCRIPCION
-------------------- --------------- --------------------------------------------------
lirio magico bulbos primavera,verano y otoño, floración forzada
azafran de otoño bulbos primavera,verano y otoño, floración forzada
forsitia cespedes cespedes para climas frios
cubo de abono cespedes cespedes para climas frios
tierra para cactus cespedes cespedes para climas frios
CONSULTA 7
SQL> Select nombre_del_proveedor, nombre_producto from productos,proveedores
2 where codigo_proveedor=proveedor;
NOMBRE_DEL NOMBRE_PRODUCTO
---------- --------------------
oh rayos lirio magico
oh rayos azafran de otoño
inverrosa forsitia
rajas cubo de abono
inverrosa tierra para cactus
CONSULTA 8
SQL> select pedidos.*, nombre,localidad from pedidos, cliente where codigo_clien
tes=codigo_cliente;
FECHA_PE FECHA_DE RUTA_DE_ENVIO CODIGO_CLIENTES FECHA_OB PEDIDO_ID TRANSPORTADO_POR ATENDIDO_POR NOMBRE LOCALIDAD
-------- -------- -------------- --------------- -------- ---------- ---------------- ------------ -------------------- --------------------
17/08/12 19/09/12 DHL 3 17/09/12 1 2 3 Michael Vancouver
16/08/12 30/09/12 DHL 1 17/09/12 2 1 1 Pilar Bellevue
10/08/12 05/10/12 OCA 1 17/09/12 3 2 1 Pilar Bellevue
lunes, 30 de septiembre de 2013
ejercicio jardineria
SQL> create table categorias(nombre_categoria varchar(15) primary key Not Null,
descripcion varchar(50));
Tabla creada.
SQL> create table proveedores(nombre_del_proveedor varchar(10),nombre_contacto v
archar(10),puesto_contacto varchar(10), direccion varchar(20), estado varchar(20
),codigo_postal integer, telefono integer,fax integer, codigo_proveedor integer
primary key);
Tabla creada.
SQL> create table productos(nombre_producto varchar(20),nombre_latin varchar(30)
,proveedor integer, categoria varchar(15),cantidad_por_unidad integer, precio_un
itario Decimal(10,2), unidades_en_stock integer, unidades_pedidas integer, minim
o_en_stock integer,descatalogado integer,codigo_producto integer primary key);
Tabla creada.
SQL> create table transportistas(compania varchar(30),contacto varchar(30),direc
cion varchar(20),localidad varchar(20),estado varchar(20),codigo_postal integer,
telefono integer, codigo_transportista integer primary key Not Null);
Tabla creada.
SQL> create table empleados(nombre varchar(20),apellido varchar(20),puesto varch
ar(30),direccion varchar(30),localidad varchar(20),estado varchar(20),codigo_pos
tal integer,telefono integer, fecha_de_nacimiento date, fecha_de_contratacion da
te, codigo_empleado integer Not Null Primary Key);
Tabla creada.
SQL> create table pedidos(fecha_pedido date,fecha_de_envio date,ruta_de_envio va
rchar(100),codigo_clientes integer,fecha_objetivo date, pedido_id integer Primar
y Key, transportado_por integer,atendido_por integer);
Tabla creada.
SQL> create table cliente(nombre varchar(20), apellido varchar(20),direccion var
char(50),localidad varchar(20),region varchar(20),codigo_postal integer, pais va
rchar(30),telefono integer,codigo_cliente integer primary key)
2 ;
Tabla creada.
SQL> create table detalles_del_pedido(precio_unitario decimal(10,2),cantidad int
eger,descuento decimal(5,2),detalle_id integer primary key,pedido_id integer);
Tabla creada.
SQL> alter table productos add(foreign key(categoria)references categorias(nombr
e_categoria));
Tabla modificada.
SQL> alter table productos add(foreign key(proveedor)references proveedores(codi
go_proveedor));
Tabla modificada.
SQL> alter table detalles_del_pedido add(producto_id integer);
Tabla modificada.
SQL> alter table detalles_del_pedido add(foreign key(producto_id)references prod
uctos(codigo_producto));
Tabla modificada.
SQL> alter table detalles_del_pedido add(foreign key(pedido_id)references pedido
s(pedido_id));
Tabla modificada.
SQL> alter table pedidos add(foreign key(transportado_por)references transportis
tas(codigo_transportista))
2 ;
Tabla modificada.
SQL> alter table pedidos add(foreign key(codigo_clientes)references cliente(codi
go_cliente))
2 ;
Tabla modificada.
SQL> alter table pedidos add(foreign key(atendido_por)references empleados(codig
o_empleado));
Tabla modificada.
descripcion varchar(50));
Tabla creada.
SQL> create table proveedores(nombre_del_proveedor varchar(10),nombre_contacto v
archar(10),puesto_contacto varchar(10), direccion varchar(20), estado varchar(20
),codigo_postal integer, telefono integer,fax integer, codigo_proveedor integer
primary key);
Tabla creada.
SQL> create table productos(nombre_producto varchar(20),nombre_latin varchar(30)
,proveedor integer, categoria varchar(15),cantidad_por_unidad integer, precio_un
itario Decimal(10,2), unidades_en_stock integer, unidades_pedidas integer, minim
o_en_stock integer,descatalogado integer,codigo_producto integer primary key);
Tabla creada.
SQL> create table transportistas(compania varchar(30),contacto varchar(30),direc
cion varchar(20),localidad varchar(20),estado varchar(20),codigo_postal integer,
telefono integer, codigo_transportista integer primary key Not Null);
Tabla creada.
SQL> create table empleados(nombre varchar(20),apellido varchar(20),puesto varch
ar(30),direccion varchar(30),localidad varchar(20),estado varchar(20),codigo_pos
tal integer,telefono integer, fecha_de_nacimiento date, fecha_de_contratacion da
te, codigo_empleado integer Not Null Primary Key);
Tabla creada.
SQL> create table pedidos(fecha_pedido date,fecha_de_envio date,ruta_de_envio va
rchar(100),codigo_clientes integer,fecha_objetivo date, pedido_id integer Primar
y Key, transportado_por integer,atendido_por integer);
Tabla creada.
SQL> create table cliente(nombre varchar(20), apellido varchar(20),direccion var
char(50),localidad varchar(20),region varchar(20),codigo_postal integer, pais va
rchar(30),telefono integer,codigo_cliente integer primary key)
2 ;
Tabla creada.
SQL> create table detalles_del_pedido(precio_unitario decimal(10,2),cantidad int
eger,descuento decimal(5,2),detalle_id integer primary key,pedido_id integer);
Tabla creada.
SQL> alter table productos add(foreign key(categoria)references categorias(nombr
e_categoria));
Tabla modificada.
SQL> alter table productos add(foreign key(proveedor)references proveedores(codi
go_proveedor));
Tabla modificada.
SQL> alter table detalles_del_pedido add(producto_id integer);
Tabla modificada.
SQL> alter table detalles_del_pedido add(foreign key(producto_id)references prod
uctos(codigo_producto));
Tabla modificada.
SQL> alter table detalles_del_pedido add(foreign key(pedido_id)references pedido
s(pedido_id));
Tabla modificada.
SQL> alter table pedidos add(foreign key(transportado_por)references transportis
tas(codigo_transportista))
2 ;
Tabla modificada.
SQL> alter table pedidos add(foreign key(codigo_clientes)references cliente(codi
go_cliente))
2 ;
Tabla modificada.
SQL> alter table pedidos add(foreign key(atendido_por)references empleados(codig
o_empleado));
Tabla modificada.
lunes, 23 de septiembre de 2013
diccionario de datos jardineria
Categorías:
Proveedores:
Productos:
Transportistas:
Empleados:
Pedidos:
Clientes:
Detalles del
pedido:
viernes, 6 de septiembre de 2013
Diccionario de datos
Campo
|
Entidad
|
Tipo de dato
|
Llave
|
Descripción
|
Código_pintor
|
Pintor
|
Integer
|
PK - llave principal
|
Numero único que le imponemos a cada pintor
|
Nombre_pintor
|
Pintor
|
Varchar(35)
|
|
Arreglo de caracteres en donde se almacenara el nombre del pintor con
un máximo de 35 caracteres
|
Código_cuadro
|
Cuadro
|
Integer
|
PK - llave principal
|
Código con el cual identificaremos cada cuadro
|
Titulo_del_cuadro
|
Cuadro
|
Varchar(80)
|
|
Nombre del cuadro con un máximo de 80 caracteres
|
Código_pintor
|
cuadro
|
Integer
|
FK- llave foránea a la entidad pintor
|
Apuntador en el cual pondremos el código asignado a cada pintor.
|
Suscribirse a:
Entradas (Atom)