Escolaridad, violencia y anticoncepción en el embarazo no deseado. Mujeres mestizas en San Cristóbal de las Casas, Chiapas. México

Schooling, violence and contraception in unwanted pregnancy. Mestizo women in San Cristobal de las Casas, Chiapas. Mexico

María Georgina Rivas Bocanegra1 Dominga Austreberta Nazar Beutelspacher2 Rosa Margarita Durán García3

Universidad de Ciencias y Artes de Chiapas

Doctora en Ciencias en Ecología y Desarrollo Sustentable1 Doctora en Ciencias. Epidemióloga2 Doctora en Ciencias. Epidemióloga. Investigadora3

Correo electrónico: georgina.rivas@unicach.mx1 anazar@ecosur.mx2 rosa.duran@unicach.mx3

http://dx.doi.org/10.31644/IMASD.6.2014.a07

Resumen

Este estudio forma parte de una investigación cualitativa realizada en San Cristóbal de Las Casas, Chiapas, México. Basada en entrevistas a mujeres mestizas nacidas en la ciudad y mestizas inmigrantes con educación media superior y más, se evidencian las relaciones de poder en el origen del embarazo no deseado. La expectativa de la unión como mandato social, la dependencia emocional y el sometimiento para evitar la violencia, están entre las razones para tener relaciones sexuales no consensuadas con dificultad para la negociación anticonceptiva.

Palabras Clave: Género, violencia, educación, anticoncepción, embarazo no deseado, aborto.

Abstract

This study is part of a cualitative research in San Cristobal de Las Casas, in Chiapas, Mexico. Mestizo women, that were born in San Cristobal and other mexican imigrants who live in that city, were interviewed about of their power relationships. The expectative of marriage, the emotional dependence and submission to avoid violence, are some of the reasons to have non consensual sexual relationships with difficulties to negotiate contraception leading to an unintended pregnancy.

Key words: Gender, violence, education, contraception, unintended pregnancy, abortion.

Introducción

El Instituto Alan Guttmacher ha señalado que en México en la década de los 90, el 40 % de los embarazos fueron no intencionados mientras que 17% de ellos terminaron en abortos inducidos (Guillaume y Lerner, 2006). Como resultado de los cambios sociodemográficos ocurridos en el país, que han llevado a la disminución de la tasa de fecundidad de 5.6 hijos por mujer en 1970 a 2.2 en 2006, la proporción de embarazos no deseados habría aumentado no obstante la política de planificación familiar, al registrarse un aumento de 64% en el número de abortos inducidos que pasó de 533 000 en 1990 a 875 000 en 2006, y en el incremento de la tasa de aborto que de 25 por 1000 mujeres de 15 a 44 años se ubicó en 33 por 1000, en el mismo período (Juárez, et al., 2008: 2-12). Estimaciones más finas, agrupando a todos los estados por regiones, señalan que dicha tasa sería de 38 por 1000 mujeres mientras que para la región 6, la menos desarrollada donde se ubica Chiapas, se encontraría entre 25 a 27 por cada 1000 mujeres; una de las más bajas si se compara con el resto del país (Juárez y Signh 2013, 25-35). Puede decirse que, en general, el aborto inducido es evidencia de que la gestación no era deseada por parte de la mujer, sin que el hecho de que la continúe hasta el parto sea garantía de que haya sido deseada.

Desde la perspectiva demográfica, el embarazo no intencionado es definido como aquel que ocurre cuando no se desea, independientemente si se utilizó o no protección anticonceptiva, debiendo distinguirse si se trató de un embarazo tal vez deseado pero inoportuno o si éste fue no deseado en absoluto (Committe on Unintended Pregnancy, 1995: 22). Esa forma de conceptualizar el problema sin embargo ha sido criticada, pues no es aplicable a todos los contextos, además de que la intención de embarazo y el deseo se correlacionan pobremente, cuando se trata de saber lo que ocurre a escala individual (Zabin, et al, 2000: 39-45, Sable y Libbus, 2000: 191-196, Poole, et al, 2000: 179-182, Standford, 2000: 183-189, Santelli, et al., 2003: 94-101).

Algunos estudios han documentado el papel de la ambivalencia que lleva a algunas mujeres a la inconsistencia en el uso de anticonceptivos o a su no uso en lo absoluto (Sable y Libus, 2000: 191-196; Zabin, 2000: 39-45). Al respecto, la erotización del riesgo, las fantasías acerca del deseo de tener un hijo con una pareja en particular, ligadas al placer sexual y por lo tanto al sexo no protegido, tanto en mujeres como en hombres, evidencian la importancia de la satisfacción de necesidades inmediatas de tipo emocional en detrimento de metas de largo plazo, como el evitar la gestación (Higgins, 2008: 130-137). Diversos estudios han puesto de manifiesto el importante papel de los varones y la estabilidad de la relación como condicionantes del deseo y destino del embarazo por parte de las mujeres, de modo que si no hubo apoyo afectivo ni económico, fue más probable que éste fuera rechazado (Kroelinger, et al., 2000: 112-119, Zabin, et al., 2000: 39-45). El deseo puede también modificarse a lo largo de la gestación como respuesta a lo que ocurre en el contexto y es significativo para las mujeres, así que un embarazo que inicialmente era deseado puede volverse no deseado o por el contrario puede ser aceptado más tarde (Sable y Libus, 2000; Kroelinger, et al., 2000; Poole, et al., 2003: 179-182, Zabin, et al., 2000).

Se ha documentado también alguna asociación entre el embarazo no intencionado y la violencia en la relación de pareja. Resultados de una amplia muestra obtenida de la base de datos del Pregnancy Risk Assessment Monitoring System (PRAMS), en los Estados Unidos, mostraron que el nacimiento del producto contra el deseo de la mujer había sido más frecuente entre quienes habían reportado violencia 12 meses antes y durante la gestación, en oposición a quienes no la sufrieron, y que sería más frecuente en mujeres socialmente más vulnerables como las afroamericanas, las menores de edad, las que no estaban casadas, las que vivían en condiciones de hacinamiento o que tenían menor escolaridad (Goodwin et al., 2000: 85-92; Saltzman et al., 2003: 31-43). La violencia sería también más frecuente entre quienes decidieron abortar y no comunicaron su decisión al varón o en quienes tuvieron abortos inducidos de repetición (Woo et al., 2005: 1329-1334; Fisher et al., 2005: 637-641). El abuso físico o sexual sufrido en la infancia y el haber crecido en un hogar disfuncional, estuvieron asociadas a la presencia de embarazo no deseado en la adultez (Dietz et al., 1999: 1359-1364).

En América Latina, el papel de apoyo o de abuso de los varones según el marco material, normativo y simbólico en que tienen lugar las relaciones de pareja, condiciona su corresponsabilidad en la protección anticonceptiva así como el deseo o no de las mujeres por el embarazo (Tolbert et al., 1999, Llovet y Ramos, 2001, Bankole et al., 1998 citados por Guillaume y Lerner, 2006). Según un estudio llevado a cabo en Colombia, la violencia de pareja mantiene una asociación significativa con el embarazo no intencionado, de modo que cada año se evitarían aproximadamente entre 32 500 y 45 000 de éstos si la primera fuera eliminada (Pallito y O’ Campo, 2004: 165-173). Si bien en México no se ha investigado la asociación entre la violencia y la intención de embarazo, la información disponible ha evidenciado que existe una continuación entre el maltrato sufrido en la infancia y más tarde en la adultez, de modo que la gestación habría sido raramente la iniciadora de la violencia (Castro et al., 2003: 110-1116; Cuevas et al., 2006: 239-24).

La asociación entre el embarazo no deseado y la violencia de pareja ha sido documentada sobre todo entre mujeres con más desventajas sociales como en aquellas con menor escolaridad (Geldstein, et al., 1997: 121-131, Rickert, et al., 2002: 178-183, Mc. Closkey, et al., 2005, Dan Vung, et al., 2008); pocos estudios, sin embargo, han encontrado que la violencia puede ocurrir también entre mujeres más escolarizadas al trastocarse los roles tradicionales de género (Burazeri, et al., 2005; Gómez Dantés, et al., 2006).

¿Qué circunstancias pueden colocar a mujeres con educación superior promedio, y aparentemente con más poder, en la posición de vivir un embarazo no deseado? El estudio que se presenta a continuación formó parte de un proyecto con metodología cualitativa que tuvo como objetivo contribuir al esclarecimiento de este problema, entre mujeres indígenas y mestizas, en una ciudad mediana de Chiapas, en el sureste de México.

Método y sujetos

Previo consentimiento informado, fueron entrevistadas doce mujeres mestizas en el período del 2006 al 2008: siete de ellas nacidas en San Cristóbal y cinco inmigrantes de diferentes municipios chiapanecos y estados del país, quienes llegaron generalmente desde su infancia a esa ciudad. La pregunta clave fue "¿cómo cree que ocurrió ese embarazo que no deseaba?". De las doce mujeres, nueve decidieron interrumpir el embarazo y tres lo continuaron hasta el nacimiento del hijo o hija.

El contexto San Cristóbal de Las Casas, Chiapas

A lo largo del siglo pasado la necesidad de tierra y en general las difíciles condiciones de vida aunadas a la violencia estructural, impusieron la migración campesina indígena de la región de Los Altos, con una alta densidad de población, hacia otras regiones del estado, así como a la ciudad de San Cristóbal de Las Casas que a partir de la década de los 70s creció vertiginosamente (Viqueira, 2005: 219-236, Aubry, 2008: 111-146, INEGI, 2003: 21-36). En ese proceso las mujeres indígenas llegaron a esta ciudad, muchas veces solas, para escapar de la violencia doméstica, pero también con la idea de mejorar su vida, transgrediendo la costumbre de sus lugares de origen (Freyermuth y Manca, 2000: 203-228; Álvarez el al, 2012: 395-423); al mismo tiempo llegaron mujeres mestizas de otros municipios, así como de otros estados del país, por motivos de estudio o trabajo, según la narrativa de las entrevistadas.

La religión católica ha tenido un peso preponderante en una región relativamente aislada como Los Altos y en San Cristóbal de Las Casas, su principal centro urbano (Aubry, 2008: 111-146), influyendo en las normas de convivencia, cuya rígida división sexual del trabajo, legitima las inequidades de género; éstas, sin embargo, se han modificado en grado variable, ante la fuerza de las transformaciones económicas, así como de las culturales. El continuo flujo migratorio de diferentes grupos sociales hacia San Cristóbal, aún de diferentes nacionalidades, desde la segunda mitad del siglo XX, ha convertido a la ciudad en un espacio cosmopolita que, junto a los medios masivos de información, han contribuido a la secularización de las costumbres locales.

La urbanización del municipio de San Cristóbal, cuya tasa de crecimiento poblacional promedio anual1 del 2000 al 2010 es una de las más alta del estado con 3.3 % (INEGI, 2011: 4), el aumento en la proporción de mujeres con educación básica e incorporadas al mercado de trabajo, así como el acceso a la anticoncepción, han dado lugar a una importante modificación en el tamaño de familia, y probablemente, a un menor deseo de embarazo por parte de éstas. Según datos del XII Censo General de Población y Vivienda del 2000 y de Los Principales resultados del Censo de Población y Vivienda 2010, en Chiapas el promedio de hijos de las mujeres entre 15 a 49 años disminuyó al pasar en esos años de 2.40 a 2.0. Situación similar se habría registrado en el municipio que pasó de 2.05 a 1.8 en el período señalado, el cual se habría producido sobre todo entre las mujeres con secundaria y más (INEGI, 2008: 41).

1 La tasa de crecimiento poblacional promedio anual está determinada por el incremento o disminución de los nacimientos, de las defunciones y del saldo neto migratorio (INEGI, 2008: 4)

Es importante señalar que en el ámbito de la reproducción, se han mantenido las inequitativas normas de género ya que en el estado la salpingoclasia ha registrado la prevalencia más alta, con el 55.6%, mientras que el condón, el coito interrumpido y la vasectomía, han tenido las prevalencias más bajas, de 3.7%, 1.7% y 0.9% respectivamente (INEGI, 2005: 52-67). Acerca del deseo por el embarazo, un estudio realizado en asentamientos marginales de la capital del estado Tuxtla Gutiérrez y de San Cristóbal de Las Casas, evidenció que hasta en un 50% hubo franco rechazo, discordancia o indiferencia al mismo, por parte de los miembros de la pareja, sin que el conocimiento de métodos anticonceptivos hubiera sido un obstáculo para que ocurrieran los embarazos (Nazar y Salvatierra, 2008: 1-16).

Resultados Las mujeres mestizas residentes en la ciudad

En este estudio las edades de las entrevistadas se ubicaban en un rango entre los 20 a 37 años. La mayoría contaba con educación media superior y más, sobre todo entre las inmigrantes, algunas de las cuales realizaban estudios de posgrado en instituciones públicas. Más de la mitad tenía un trabajo extradoméstico, algunas de acuerdo con su profesión, y quienes se ocupaban de las labores del hogar eran casi todas estudiantes con un hijo (a) o tenían a un familiar a su cargo. Sólo cinco estaban unidas, dos estaban en proceso de separación y las cinco restantes eran solteras, en su mayoría en etapa de noviazgo. Todas se adscribieron católicas.

Las mujeres originarias de la ciudad procedían de hogares donde los padres eran en su mayoría profesores, una de las pocas profesiones que ha permitido una mejora en las condiciones de vida en una región marginada; o éstos eran pequeños empresarios locales quienes vivían con cierta holgura; o pequeños artesanos. Las mujeres inmigrantes procedían de familias de campesinos, de obreros y de empleados de gobierno, las cuales eran de municipios fronterizos y de la costa del estado de Chiapas así como de los estados de Puebla y Oaxaca. Aunque era explícita la prohibición de involucrarse con una pareja antes del término de los estudios, la mayoría de las originarias de San Cristóbal iniciaron su vida sexual antes de los 20 años mientras que las inmigrantes, en general, después de esa edad. El hecho de ser mujeres con educación media superior o superior, el tener a veces un trabajo extradoméstico y su propio ingreso así como el contar con el apoyo de su familia, no las eximió de haber sufrido abuso por parte de su pareja (celos y control por parte del varón, amenazas a su seguridad, el haberse sentido presionadas a tomar alcohol, el haber sido humilladas, el recibir cachetadas o empujones, el que el varón las engañara con otra mujer, el sufrir su falta de compromiso afectivo y económico hacia ellas y sus hijos e hijas, hasta el abandono). En general en el grupo de las mujeres sancristobalenses todas preparatoria y más, fue frecuente que los varones impusieran sus condiciones y que éstas asumieran los roles de género hegemónicos y desiguales. Entre las mujeres con estudios universitarios y más, sobre todo inmigrantes, lo anterior fue menos común y más de la mitad de éstas negoció de tal manera, que en las crisis pudieron imponer en diverso grado sus propios términos.

Acerca de su vida sexual sólo cuatro de las entrevistadas, un tercio del total, mencionaron que sus relaciones eran consensuadas y por lo tanto respetuosas de sus deseos así como placenteras, correspondiendo con quienes mantenían una relación de pareja un poco más equitativa. Dos eran sancristobalenses y dos inmigrantes, generalmente entre las que tenían mayor nivel de estudios dentro de su respectivo grupo. Para el resto, las relaciones eran aceptadas como una más de las atenciones al varón así como para evitar el reclamo o aún la violencia.

Llama la atención que la mitad de las entrevistadas, entre las que estaban sobre todo las mujeres sancristobalenses, mencionó haber usado anticonceptivos hormonales orales que a veces se les olvidaba tomar; mientras que en las inmigrantes, con mayor escolaridad, predominó sobretodo el uso del condón, así como el método del ritmo con alguna variante como el Billings o el coito interrumpido. Dos de las mujeres nacidas en la ciudad, un sexto de toda la muestra, de las cuales una ya tenía dos hijos, no usaron ninguna forma de protección anticonceptiva; mientras que sólo una de las entrevistadas del total, inmigrante, utilizó alguna vez la píldora de emergencia.

Acerca del embarazo no deseado

No obstante la escolaridad alcanzada, en el aspecto sexual y reproductivo las tres cuartas partes de éstas refirieron abuso de poder por parte de los varones, quienes impusieron sus condiciones y ellas se subordinaron, así que no siempre pudieron controlar el momento de tener relaciones sexuales; aunado a la inconsistencia en el uso de métodos anticonceptivos efectivos y el confiar en otros menos seguros como el ritmo, el coito interrumpido o simplemente no usar ninguno, en una situación en la que ellas difícilmente tenían el control, lo que se complementa con la poca corresponsabilidad de los varones, quienes fueron inconsistentes con el uso del condón o simplemente rehusaron usarlo.

"Sí, nunca tuve problemas en que hubiera de que yo no quisiera tener relaciones o no. Siempre. Así a veces sí me sentía cansada, le digo, por los desvelos [por el cuidado de los hijos pequeños], pero siempre o sea... estuve con él"

"¿Si él no quería un tercero hijo, hizo algo para cuidar la situación, o sea que él usara condón? (entrevistadora).

No. No, no, no... o sea... todo lo tenía que hacer yo porque él no podía hacer nada". (Alicia, mujer sancristobalense de 26 años).


"Sí. Realmente... hasta hoy en día... no sé decir que no y no sé por qué. Aunque... aunque yo no quiera, aunque no me guste, aunque realmente... no se siente uno a gusto...no. Yo nada más utilizaba pastillas, pero no se lo decía a él... no le decía a él. Creo que me falló, o tal vez no... o sí tanta preocupación, a veces ya estaba yo loca de verdad". (Cristina, mujer sancristobalense de 20 años).

"Ahorita me estoy dando cuenta que a veces una semana antes me dan los dolores... siete, ocho días antes de que me baje mi menstruación, entonces considero... creo yo que todavía son días... fértiles [refiriéndose al método del ritmo], pero pues... ocurrió lo que tenía que ocurrir. Y sí me sentí un poco molesta conmigo y con él, porque... pues ya nos ha pasado otras veces y... seguimos con lo mismo pero yo en esa noche yo no pude decir "no", o sea "no, no quiero, tengo miedo"... este... "mejor no nos arriesgamos"... no" (Elsa, mujer de 29 años, originaria de Oaxaca).

Así el embarazo no deseado se explica (1) por la dependencia emocional de las mujeres hacia sus parejas y/o (2) para evitar el reclamo y aún para que no continúe la violencia; en un contexto normativo donde el ser esposa y madre es el paso natural y papel principal que se espera cumplan todas las mujeres.

Cuando hubo una relación con una relativa equidad, en este caso en una cuarta parte de las entrevistadas quienes generalmente tenían mayor grado de estudios, el embarazo no deseado se debió en algún nivel subjetivo: (3) al exceso de confianza y por lo tanto al hecho de creer en la propia invulnerabilidad, así como a la negación del riesgo o quizás a la probable erotización del acto sexual sin protección anticonceptiva, tal cual lo refiere Higgins (2008: 130-137).

Puesto que en la ciudad de San Cristóbal de Las Casas, Chiapas el deseo por más hijos e hijas parece haber disminuido, implica que más mujeres han debido permanecer un mayor lapso de su vida reproductiva sin concebir y que, por lo tanto, habrían necesitado protegerse en mayor medida para evitar un embarazo no deseado. El uso de métodos anticonceptivos sin embargo no habría aumentado, a juzgar por el mantenimiento en la proporción de chiapanecas que los utilizarían, de 53.5% en 1997 y 54.9% en el 2009 (INEGI, 2010), y que se explica por el hecho de que la política de planificación familiar habría dejado de ser una prioridad para el Estado mexicano, al acercarse la población del país al nivel de reemplazo, como lo han planteado Juárez y colaboradores (2008).

Pero aún cuando los anticonceptivos estuvieran ampliamente disponibles, las mujeres habrían encontrado un obstáculo para evitar los embarazos en las costumbres conservadoras de la ciudad y el "deber ser" de los roles hegemónicos de género, que si bien se han modificado, en general mantienen la división sexual del trabajo y la violencia simbólica que legitima la dominación masculina, y su contraparte, la subordinación de las mujeres. Dicha subordinación no permite que éstas se posicionen asertivamente y controlen su cuerpo, lo que se expresaría de una manera específica en cada grupo social y daría lugar probablemente a un aumento de embarazos no deseados y quizás de abortos inducidos en condiciones de riesgo.

Discusión

Si bien desde hace décadas se ha evidenciado la existencia de asociación entre la educación de las mujeres y la disminución de la fecundidad (Cochrane 1979; Caldwell 1982; United Nations 1987, 1995; Cleland y Rodríguez 1988; Jejeebhoy 1995; Jeffery y Basu 1996; National Research Council 1999, citados por Bongaarts, 2003: 321), Jejeebhoy y Sathar (2001: 678-712) plantean que ello ocurriría porque la educación generaría en las mujeres la capacidad de tomar decisiones, de controlar recursos diversos, de acceder al conocimiento, a la libre movilidad y por lo tanto a relaciones más equitativas en sus familias. McRobbie (2010: 113-135) sin embargo, pone en entredicho el papel igualitario de la educación para las mujeres que, en el marco de la globalización y el desmantelamiento de los logros sociales, recrea bajo nueva luz las normas de género.

Al depender la educación del contexto económico y sociocultural, del papel de las normas y valores que definen el "deber ser" de los roles hegemónicos de género interiorizados en formas de sentir, pensar y hacer de las mujeres y los hombres, y precisamente por no ser cuestionados, aquella tendría en términos generales, un menor peso en lo que se refiere a la conducta sexual y reproductiva. No sería extraño entonces, que no obstante el nivel de escolaridad logrado, los embarazos no deseados tuvieran como causa, fundamentalmente, una subjetividad femenina subordinada a los deseos sexuales de los varones en donde las relaciones íntimas no consensuadas, serían una más de las formas no reconocidas que asume la violencia, tal como otros estudios lo han evidenciado (Santhya, 2007: 124-132, Goodwin et al., 2003: 31-43, Saltzman et al., 2003: 31-43, Pallito y O´Campo, 2004: 165-173) y (Tolbert et al., 1999; Llovet y Ramos, 2001; Bankole et al., 1998; citados por Guillaume y Lerner, 2006). A pesar de todo, el que por medio de la educación las entrevistadas tuvieran un proyecto de vida propio alternativo a los roles tradicionales, parece haber jugado algún papel en el retraso para concebir y en una toma de decisión a favor de sí mismas.

Conclusiones

Centrar la solución del problema solo en una mayor información y acceso a la protección anticonceptiva, es insuficiente ante un contexto normativo marcado por las inequidades de género, de clase y de etnia. Además del acceso de las mujeres a todos los niveles de educación, es preciso construir socialmente condiciones que posibiliten proyectos alternativos al de esposa y madre, y redunden en una mejora en sus condiciones de vida. La modificación de las actitudes sexistas en todos los espacios de la vida diaria, particularmente en lo que tiene que ver con los medios masivos de información que modelan en buena parte esas mismas conductas, así como el que la violencia hacia las mujeres no quede impune, son fundamentales para modificar las normas sociales y erigir nuevas subjetividades entre hombres y mujeres. Finalmente, puesto que seguirá habiendo embarazos no deseados, es fundamental revisar la legislación que limita el que las mujeres puedan acceder al aborto legal y seguro en Chiapas y que actualmente restringe el ejercicio de sus derechos sexuales y reproductivos.

Bibliografía

Álvarez P. Micaela, Robledo H Gabriela y Sánchez R Georgina (2012). "Migrar, cambiar y continuar. Dos generaciones de mujeres indígenas en la búsqueda de autonomía". En: Tuñón P Esperanza y Rojas W Martha L. (coord.) Género y Migración II. Ecosur, El Colegio de la Frontera Norte, El Colegio de Michoacán y CIESAS. México. Pp. 395-423

Aubry, André (2008). "LA GENTE". En: SAN CRISTÓBAL DE LAS CASAS. SU HISTORIA URBANA, DEMOGRÁFICA Y MONUMENTAL 1528-1990. Ed. Fray Bartolomé de Las Casas. A. C. Chiapas. México. 111-146.

Bongaarts, John (2003). "Completing the fertility transition in the developing world: the role of educational differences and fertility differences". En: Population Studies, Vol. 57. No. 3. 321-335.

Burazeri, Genc, Enver Roshi, Rachel Jewkes, Sussane Jordan, Vesna Bjegovic, Ulrich Laaser (2005). "Factors associated with physical violence in Albania: cross sectional study". En: BMJ. Vol. 331. No. 23. 197-201.

Castro, Roberto, Corinne Peek-Asa y Agustín Ruiz (2003). "Violence Against Women in Mexico: A Study of Abuse Before and During Pregnancy". En: American Journal of Public Health. Vol. 93. No. 7: 1110-1116.

Committee on Unintended Pregnancy (1995). "Demography of Unintended Pregnancy". En: Brown, Sara S and Leon Eisenberg (eds), The Best Intentions. Unintended Pregnancy and the Well-Being of Children and Families. National Academy of Sciences. Washington. 21-49. http://www.nap.edu/catalog/4903.html

Cuevas Sofía, Julia Blanco, Clara Juárez, Oswaldo Palma, Rosario Valdez-Santiago (2006). "Violencia y embarazo en usuarias del sector salud en estados de alta marginación en México". En: Salud Pública de México, Vol. 48, suplemento 2. Pp. 239-249.

Dan Vung, Nguyen, Perl-Olof Ostergren y Gunilla Krantz (2008). "Intimate partner violence against women in rural Vietnam different socio-demographic factors are associated with different forms of violence: need for new intervention guidelines". En: BMC Public Health. 8:55. 1-11.

Dietz, Patricia M, Alison M. Spitz, Robert F. Anda, David F. Williamson, Pamela M. McMahon, John S. Santelli, Dale F. Nordenberg, Vincent F. Felitti and Juliette S. Kendrick (1999). "Unintended Pregnancy Among Adult Women Exponed to Abuse or Household Dysfunction During Their Childhood". En: JAMA, Vol. 282. No. 14: 1359-1364.

Fisher, William A, Sukhbir S. Singhn, Paul A. Shuper, Mark Carey, Felicia Otchet, Deborah MacLean-Brine, Diane Dal Bello, Jennifer Gunter (2005). "Characteristics of women undergoing repeat induced abortion". En: CMAJ. 172(5). Pp. 637-641.

Freyermuth Graciela y Ma. Cristina Manca (2000). "Invisibles y transgresoras: migración y salud reproductiva en Los Altos de Chiapas". En: Barrera B Dalia y Oehmichen Bazan Cristina (edit), Migración y relaciones de género en México. GIMTRAP. UNAM/IIA. México. 203-228.

Geldstein, Rosa N y Edith A. Pantelides (1997). "Double subordination, double risk: class, gender and sexuality in adolescent women in Argentina". En: Reproductive Health Matters. Vol. 5, No. 9. 121-131.

Gómez Dantés Héctor, José Luís Vázquez Martínez y Sonia B. Fernández Cantón (2006). "La violencia en las mujeres usuarias de los servicios de salud en el IMSS y la SSA". En: Salud Pública de México. Vol. 48, suplemento 2. 279-287.

Goodwin, Mary M. JA Gazmararian, CH Johnson, Bc Gilbert, LE Saltzman y the PRAMS Working Group. (2000). "Pregnancy Intendedness and Physical Abuse Around the Time of Pregnancy: Findings from the Pregnancy Risk Assesment Monitoring System, 1996-1997". En: Maternal and Child Health Journal, Vol. 4, No. 2. 85-92

Guillaume, Agnes y Susana Lerner (2006). "Las estimaciones sobre el aborto: dificultades y limitaciones". En: El Aborto en América Latina y el Caribe. CEPED y Colegio de México.

Higgins Jenny, Jennifer S. Hirsch y James Trussel (2008). "Pleasure, prophylaxis and procreation: a qualitative analysis of intermittent contraceptive use and unintended pregnancy". En: Perspectives on Sexual and Reproductive Health. 40 (3). 130-137.

INEGI (2003). "Estado y Movimiento de la Población". En: Cuaderno Estadístico Municipal. San Cristóbal de las Casas, Chiapas. Gobierno del Estado de Chiapas, INEGI y H. Ayuntamiento Constitucional de San Cristóbal de Las Casas. 21-36.

INEGI (2005). "Conocimiento y uso de anticonceptivos". En: Mujeres y Hombres en Chiapas. Gobierno del Estado de Chiapas, INEGI e Instituto de la Mujer. 52-67.

INEGI (2008). "Fecundidad". En: Perfil sociodemográfico de Chiapas. II Conteo de Población y Vivienda 2005. México. 32-42

INEGI (2010). "Mujeres que usan métodos anticonceptivos por entidad federativa. En: Demografía y población. http://www.inegi.org.mx/Sistemas/temasV2/Default.aspx?s=est&c=17484.

INEGI (2011). "Características demográficas. Población". En: Principales resultados del Censo de Población y Vivienda 2010, Chiapas. México. 1-18.

Jejeebhoy Shireen J y Zeba A Sathar (2001). "Women's autonomy in India and Pakistan: the influence of religion and region". En: Population and Development Review. 27 (4). 687-712.

Juárez, Fátima, Susheela Singh, Sandra G. García y Claudia Díaz Olavarrieta (2008). "Estimates of Induced Abortion in Mexico: What´s Changed Between 1990 and 2006?". En: International Family Planning Perspectives. Vol. 34. Number. 4.. 2-12.

Juárez, Fátima y Susheela Singh (2013). "Incidencia del aborto inducido por edad y estado, México 2009: nuevas estimaciones usando una metodología modificada". En: Perspectivas Internacionales en Salud Sexual y Reproductiva, Número especial, pp. 25-35.

Kroelinger, Charlan D y Kathryn S. Oths (2000). "Partner Support and Pregnancy Wantedness". En: BIRTH. 27: 2. 112-119.

Mc Closkey, Laura Ann, Corrine Williams y Ulla Larsen (2008). "Gender inequality and intimate partner violence among women in Moshi, Tanzania". En: International Family Planning Perspectives. Vol. 31. No. 3. 124-130.

McRobbie Angela (2010). "¿Las chicas arriba? Las mujeres jóvenes y el contrato sexual postfeminista". En: Debate feminista. Año 21, Vol. 41. Abril. 113-135. http://www.debatefeminista.com/indice_volumen.php?id_volumen=100

Nazar Beutelspacher Austreberta y Benito Salvatierra Izaba (2008). "Embarazo no deseado en población indígena y mestiza de asentamientos urbanos marginales de Chiapas". En: Población y Salud en Mesoamérica. Vol. 5. No. 002. San José Costa Rica. 1-16.

Pallito, Christina C y Patricia O’ Campo (2004). "The Relationship Between Intimate Partner Violence and Unintended Pregnancy: Analysis of a National Sample from Colombia". En: International Family Planning Perspectives, Vol. 30, No. 4. 165-173.

Poole, Victoria L, Juanzetta S. Flowers, Robert L. Goldenberg, Suzanne P. Cliver, y Sandre McNeal (2000). "Changes in Intendedness During Pregnancy in a High-Risk Multiparous Population". En: Maternal and Child Health Journal, Vol. 4. No. 3: 179-182.

Sable, Marjorie R, y M, Kay Libbus (2000). "Pregnancy Intention and Pregnancy Hapiness: Are they different?" En: Maternal and Child Health Journal, Vol.4 No. 3. 191-196.

Saltzman Linda, Cristopher Johnson , Brenda Colley Gilbert y Mary M. Goodwin (2003). "Physical abuse around the time of pregnancy: an examination of prevalence and risk factors in 16 states". En: Maternal and Child Health Journal. Vol. 7, No. 1, 31-43.

Santelli, John, Roger Rochat, Kendra Hatfield-Timajchy, Brenda Colley Gilbert, Kathryn Curtis, Rebecca Cabral, Jennifer S. Hirsch, Laura Schieve y Other Members of the Unintended Pregnancy Working Group (2003). "The Measurement and Meaning of Unintended Pregnancy". En: Perspectives on Sexual and Reproductive Health. Vol. 35. No. 2. 94-101.

Santhya K. G, Nicole Haberland, F. Ram, R. K. Sinha y S. K. Mohanty (2007). "Concent and Coercion: Examining Unwanted Sex among Married Young Women in India". En: International Family Planning Perspectives, Vol. 33, No. 3. September. Pp. 124-132.

Stanford, JB. Hobbs R, Jameson P, De UIT MJ y Fisher R (2000). «Defining Dimentions of Pregnancy Intendedness". En: Maternal and Child Health Journal. Vol. 4. No. 3. 183-189.

Viqueira, Juan Pedro (1995). "Los Altos de Chiapas: una introducción general". En: Viqueira, PJ y MH, Ruz (edit.). CHIAPAS. LOS RUMBOS DE OTRA HISTORIA. UNAM, CIESAS, CEMCA Universidad de Guadalajara. Pp. 219-236.

Woo, Junda. Paul Fine y Laura Goetzl (2005). "Abortion Disclosure and the Association with Domestic Violence". En: Obstetrics and Gynecology. Vol. 105. No. 6: 1329-1334.

Zabin, Laurie Schwab, George R. Huggins, Mark R. Emerson y Vanessa E. Cullins (2000). "Partners Effects on a Woman’s Intention to Conceive: ‘Not with This Partner’." En: Family Planning Perspectives. 32 (1). 39-45.



Administración de base de datos con PostgreSql - Laboratorio 1. Control de usuarios

Luis Antonio Álvarez Oval
Mtro. en Ciencias, PTC de la Fac. Contaduría UNACH Campus Tapachula.
Contacto loval@unach.mx
Resumen

La serie de laboratorios de Administración de Bases de Datos con PostgreSQL, muestra de forma práctica la administración de este tipo de sistemas, el cual tiene un amplio uso en la industria de desarrollo de software. Mientras que las bases de datos son la herramienta que requieren las empresas que necesitan almacenar la información que generan, es en este tipo de sistemas donde se guarda ésta. De ahí la importancia de entender y aplicar los conceptos de administración estándar que se usa en la industria. Se usa el sistema PostgreSQL debido a que ofrece los mecanismos que tienen otros sistemas similares pero de carácter propietario. PostgreSQL se ofrece bajo una licencia PostgresSQL, lo que permite desde el punto de vista del propietario de un sistema de información evitar el pago de costosas licencias por el uso de una base de datos.

Palabras clave: Administración de Base de Datos, SQL, Programación de procedimientos almacenados, postgreSQL.

Introducción

Esta serie de seis laboratorios de Administración de Base de Datos (ABD) son un punto de partida para conocer a detalle las prestaciones ofrecidas por el sistema PostgreSQL, este es un sistema de base de datos objeto-relacional que tiene las características de los sistemas de base de datos propietarios tradicionales. PostgreSQL es libre y el código fuente completo está disponible. Esta última característica es la más atractiva para desarrollar aplicaciones empresariales para el mercado latinoamericano, ya que evita el pago de costosas licencias. El software y la documentación se ofrecen bajo la licencia PostgreSQL (http://www.postgresql.org/about/licence/), la cual es similar a las licencias BSD o MIT. Los laboratorios se han diseñado para proporcionar los conceptos y la experiencia necesarios para conocer detalladamente el sistema, se aprovecha la función de "copiar y pegar" que nos ofrece el sistema operativo Windows para disminuir el esfuerzo del lector en la preparación del ambiente de trabajo y en la solución de los problemas.

En la sección denominada "trabajo adicional" se requiere que el lector aplique la experiencia obtenida en la solución de problemas relacionados con el tema central del laboratorio. La sección de conceptos básicos muestra la sintaxis de los comandos y da algunas explicaciones del uso de los mismos. Este material ha sido tomado del Manual de usuario del sistema PostgreSQL el cual está disponible en la página oficial de la herramienta, en algunos casos se ha tomado del sitio oficial en Español. Los conceptos básicos se aplican en torno a un proyecto que se denomina "Universidad ACME", el cual es producto de la imaginación del autor, así como la solución práctica de los problemas planteados. Los libros que se ofrecen en la sección de referencias, sirven como consulta para apoyar algunos de los conceptos que se aplican en la solución práctica de problemas de administración de base de datos.

Estos laboratorios se han preparado para procurar una experiencia práctica a los estudiantes de la materia Administración de Base de Datos de la Licenciatura en Sistemas Computacionales que se ofrece en la Facultad de Contaduría Pública (FCP) del Campus IV de la Universidad Autónoma de Chiapas (UNACH). En la FCP tenemos al menos 14 años de experiencia en el uso de PostgreSQL en las aulas, proyectos de investigación y en sistemas que se han implementado para la automatización de las actividades cotidianas de la FCP. Como producto de esa experiencia académica e industrial se han obtenido estos laboratorios que se usan en las aulas para capacitar a nuestros estudiantes. Hemos encontrado que los estudiantes se motivan al estudio cuando se concretan en estos ejercicios las ideas abstractas que se explican en las aulas, aunque ese será tema de otro artículo. También se tiene noticia de que son una fuente de consulta para egresados que laboran en el sector empresarial.

Como se ha mencionado previamente la herramienta tiene características y lenguajes de programación estándar que ofrecen sistemas propietarios, por lo que los ejemplos fácilmente pueden ser aplicados en otros sistemas de bases de datos del mercado, o pueden ser referencia para aplicar los conceptos en proyectos industriales. Por lo que puedan servir como consulta a profesionales de las Ciencias de la Computación.

Objetivo

El lector aprenderá a administrar grupos y usuarios que acceden a una base de datos, así como a otorgar y revocar privilegios para limitar sus actividades usando las herramientas que ofrece el sistema de administración de base de datos PostgreSQL.

Prerrequisitos

Se espera que el lector tenga experiencia previa en el uso y conversión de diagramas Entidad-Relación (E-R), los temas asociados al Diseño de Base de Datos no se cubren en este documento. También se espera que el usuario tenga conocimientos básicos del lenguaje de programación denominado SQL.

Es necesario instalar la base de datos PostgreSQL versión 9.3 sobre el sistema operativo Windows, verifique los requerimientos para instalación en la página oficial de la herramienta: www. postgresql.org. El sistema puede descargarse del sitio Web:

http://www.enterprisedb.com/products-services-training/pgdownload#windows

Partes que componen este laboratorio:

1. Proyecto a desarrollar

2. Conceptos básicos

3. Preparación del ambiente de trabajo

4. Problemática a resolver

5. Trabajo adicional

6. Referencias


1. Proyecto a desarrollar

El ejercicio consiste en un proyecto que describe el problema de una empresa dedicada a la prestación de servicios educativos: después de leer el texto se genera el diagrama E-R con la solución a este problema, se continúa con la creación de las tablas y población de las tablas, para finalmente trabajar con los permisos de grupos y usuarios.

Proyecto Universidad ACME

En UACME, se ofrecen dos tipos de cursos en el periodo especial de verano, en que se imparten cursos de verano y cursos extracurriculares. Los primeros son materias que un alumno regular que estudia una carrera cursa en este periodo, se le permite adelantar hasta dos materias; mientras que los segundos son cursos especiales de capacitación que se ofrecen a alumnos regulares como estudiantes o profesionistas externos.

Los docentes de la UACME, son los únicos a los que se les permite impartir estos cursos, por los cuales reciben un pago adicional, se les paga de acuerdo con un tabulador que indica el costo de la hora de estos cursos de acuerdo al nivel académico del docente. El pago se genera a partir del alta del curso y sólo se permite expedir un cheque por cada curso. Además, los estudiantes deben acudir a pagar adicionalmente al costo del semestre por asistir a ellos.

UACME tiene dos departamentos que intervienen en la administración de los cursos:

A) Departamento de Administración (DA) y B) Departamento de Control Escolar (DCE). Corresponde al DA, efectuar el pago a los docentes y los cobros a los alumnos. El DA es dirigido por el C.P. Ávila y es auxiliado por el Sr. Cancino. Mientras que el DCE, es dirigido por el Lic. Barroso y auxiliado por los Sras. Tirado, Martínez, Aquino y Ramos y es en éste donde se decide qué cursos se imparten en el periodo, quién los imparte, y se aceptan las solicitudes de los alumnos. Un caso especial, es el de los Profesores, ya que el DA es quién les puede modificar el sueldo quincenal, mientras que el DCE ni siquiera puede visualizar este. Lo curioso es que el DCE es quien acepta los docentes y los registra en el sistema, pero es el DA donde se captura el sueldo. Importante es para la administración de la UACME que esta política se aplique al pie de la letra, y que sea implementado directamente sobre la DB. A continuación se describe detalladamente las tablas a las cuales tiene acceso el personal.

Tablas a las que se le permite el acceso al personal de la Secretaría Administrativa:
Cuenta Cheques, Cheque, Tabulador, Profesores, Concepto, Recibo, y Detalle Recibo.
Como casos especiales este departamento podrá acceder a consultar las tablas de Cursos Especiales, Cursos Especiales Verano, Cursos Especiales Extracurriculares, Cursos Extracurriculares y Materias. Explícitamente no se les permite modificar ningún campo o registro.

Tablas a las que se le permite el acceso al personal de la Secretaría Escolar:

CursosEspeciales, CursosExtracurricular, Materias, CEVerano, CEExtracurricula, Alumnos, Bimestre, Faltas, CalendarioEscolar.

2. Conceptos básicos

Aquí encontrará una versión modificada del manual de usuario de PostgreSQL que da una explicación del uso y la sintaxis de los comandos usados en el presente laboratorio. Para consultar el manual oficial en idioma inglés visite el sitio en Internet.

Administrando Cuentas de Usuario

Como un administrador de PostgreSQL, quizá sea responsable de crear cuentas de usuarios y grupos. Quizá sea responsable también de otorgar y revocar privilegios.

En la mayor parte de los ambientes, hay un mapeo uno a uno entre la identidad de los usuarios en el sistema operativo y la identidad de PostgreSQL. En efecto, tu nombre de usuario en PostgreSQL es frecuentemente identificado con tu nombre de usuario del sistema operativo.

En algunos casos otras configuraciones son útiles. Por ejemplo, quizá quiera que la mayoría de los usuarios se identifique por ellos mismos de manera única mientras les proporciona una cuenta con privilegios de invitado. Quizá también tiene una aplicación cliente que se identifica por sí misma pero rara vez identifica al usuario (esto es útil para las aplicaciones que son ejecutadas por algún usuario dentro de algún proveedor de autentificación).

Una cuenta de usuario es compartida entre todas las bases de datos dentro de clúster dado. Los grupos de usuarios son también almacenados entre todas las bases de datos dentro de un clúster.

Privilegios (CREATEDB y CREATEUSR)

Cuando se crea un nuevo usuario, se puede controlar algunas de las actividades que estos realizan en la base de datos, tal como el permiso de crear nuevas bases de datos. También puede controlar la actividad de crear nuevos usuarios. Dar al usuario el derecho de crear nuevas bases de datos o crear nuevos usuarios es un riesgo. Cuando asigna privilegios a un usuario con CREATEUSER, ese usuario llega a ser un súper usuario en el clúster. Se debe decir que ésta es una forma ligeramente diferente: un usuario que tiene privilegios por CREATEUSER puede sobrepasar todas las restricciones en el clúster de base de datos. Se puede negar explícitamente los privilegios con CREATEUSER especificando NOCREATEUSER, NOCREATEUSER es asumido si no se específica otro valor.

Las opciones de CREATEDB dan al usuario el derecho de crear nuevas bases de datos (dentro del clúster). Se puede especificar NOCREATEDB para prohibir al usuario crear nuevas bases de datos. Si especifica CREATEDB no NOCREATEDB, CREATE USER asumirá NOCREATEDB.

Administración de Grupos

Se pueden definir grupos de usuarios para hacer la administración mucho más fácil. Cada grupo puede incluir usuarios. Cada usuario puede llegar a pertenecer a uno o más grupos. Cuando se otorga o revocan privilegios para un objeto, se puede identificar un usuario específico o un grupo de usuarios.

Cada usuario es automáticamente miembro de un grupo PUBLIC. PUBLIC es realmente un grupo virtual, no puede agregar o remover miembros y no puede borrar este grupo, pero se permite asociar privilegios con PUBLIC.

Los grupos son mucho más fáciles de manejar, si ellos coinciden con los roles en la organización. Por ejemplo, quizá construya grupos nombrados como: desarrolladores, invitados, cajeros y administradores. Los grupos se deben ordenar de forma que reflejen el mundo real, los grupos hacen que sea mucho más fácil asignar privilegios en los objetos de la base de datos. Un objeto dado puede pertenecer a muchos grupos. Por ejemplo, un miembro del grupo de los desarrolladores quizá también pertenezca al de los administradores.

Las definiciones de los grupos son almacenados en las tablas del sistema. Como los usuarios de la base de datos, las definiciones del grupo son almacenadas para toda la base de datos dentro de un clúster.

CREATE GROUP

Un súper usuario PostgreSQL puede crear un nuevo grupo usando el comando CREATE GROUP:

CREATE GROUP nombre_grupo [ [WITH] option [...] ]

El nombre de grupo debe reunir las reglas para los identificadores de PostgreSQL (31 caracteres o menos, comillas o iniciar con una letra o subrayado). Puedes incluir un valor SYSID si quiere asignar un identificador numérico para el nuevo grupo. Nosotros conocemos cada grupo de usuarios por su nombre, pero alguna tabla que se refiera al grupo se referirá al valor numérico. Quizá asigne un identificador numérico específico para un grupo por las mismas razones que se asigna un identificador específico para un usuario.

Puede asignarse un miembro a un grupo de tres maneras:

• Usar la opción IN GROUP en el comando CREATE USER

• Lista los nombres de usuarios en el USER opción de CREATE GROUP

• Cambia los miembros del grupo usando el comando ALTER GROUP

Un típico comando es CREATE GROUP con el que quizá se vea algo como esto:

CREATE GROUP desarrolladores USER Bernardo, lety;
           [ [WITH] option]...

Este comando crea un nuevo grupo nombrado desarrolladores que inicialmente tiene dos miembros Bernardo y Lety.

Crear Usuarios

Hay dos formas de crear un nuevo usuario: ejecutando el comando CREATE USER desde una aplicación cliente (tal como un psql), o con el createuser del shell script.

La sintaxis completa para el comando CREATE USER es:

CREATE USER nombre_usuario
           [ [WITH] option]...
           option := SYSID user-id-number
                      | [NO] CREATEDB
                      | [NO] CREATEUSER
                      | IN GROUP groupname[, ...]
                      | [ [UN] ENCRYPTED ] PASSWORD ‘password’
                      | VALID UNTIL ‘expiration’

Un nombre-usuario debe conformar las reglas usuales para los identificadores PostgreSQL: esto debe iniciar con una letra (o un subrayado) y debe tener 31 caracteres de extensión. Si necesitas iniciar un nombre de usuario con un número, sólo encierra el nombre con comillas dobles.

Vistas

Las vistas son pseudo-tablas, esto es, que no son tablas reales, sin embargo aparecen como tablas ordinarias para seleccionar. Una vista puede representar un subconjunto de una tabla real, seleccionando ciertas columnas o ciertas filas de una tabla ordinaria. Incluso, una vista puede representar a varias tablas unidas. Debido a que a las vistas se les asignan permisos por separado, se les puede usar para restringir acceso a una tabla. Las vistas son creadas utilizando el comando CREATE VIEW.

Creación de reglas

Sintaxis

CREATE RULE name AS ON event
           TO object [ WHERE condition ]
           DO [ INSTEAD ] [ action | NOTHING ]

name - El nombre de la regla a crear.
           event - Evento puede ser select, update, delete o insert.
           object - Objeto puede ser table o table.column.
           condition - Cualquier clausula, SQL WHERE, New o Current, pueden aparecer en lugar de una
           variable de instancia siempre que una variable de instancia es admisible en SQL.
           action - Cualquier clausula SQL, New o Current pueden aparecer en lugar de una
           variable de instancia siempre que una variable de instancia sea admisible en SQL.

Descripción

El sistema de reglas de PostgreSQL permite que una acción alternativa sea realizada en updates, inserts o deletes en tablas o clases. Actualmente se utilizan reglas para implementar vistas de tablas.

El significado de una regla es que cuando una instancia individual es accedida, actualizada, insertada o borrada, existe una instancia actual (para consultas, actualizaciones y borrados) y una nueva instancia (para actualizaciones y añadidos). Si el event especificado en la cláusula ON y la condition especificada en la cláusula WHERE son verdaderas para la instancia actual, la parte action de la regla es ejecutada. Antes, sin embargo, los valores de los campos de la instancia actual y/o la nueva instancia son sustituidos por current.attribute-name y new.attribute-name.

La parte action de la regla se ejecuta con el mismo identificador de comando y transacción que el comando de usuario que causó la activación.

Notas

Es pertinente la precaución con reglas de SQL. Si el mismo nombre de clase o variable de instancia aparece en el event, la condition y la parte action de la regla, son considerados todos diferentes tuplas. De forma más precisa, new y current son las únicas tuplas que son compartidas entre cláusulas. Por ejemplo, las siguientes dos reglas tienen la misma semántica.

ON UPDATE TO emp.salary WHERE emp.name = "Joe"
           DO UPDATE emp ( ... ) WHERE ...

ON UPDATE TO emp-1.salary WHERE emp-2.name = "Joe"
           DO UPDATE emp-3 ( ... ) WHERE ...

Cada regla puede tener la etiqueta opcional INSTEAD. Sin esta etiqueta, la action será realizada en adición al comando de usuario cuando el event en la parte condition de la regla aparezcan. Alternativamente, la parte action será realizada en lugar del comando del usuario. En este último caso, la action puede ser la palabra clave NOTHING.

Cuando se elige entre los sistemas de reescritura y reglas de instancia para una aplicación particular de una regla, recuérdese que en el sistema de reescritura, current se refiere a la relación y algunos calificadores mientras que en el sistema de instancias se refiere a una instancia (tupla). Es muy importante notar que el sistema de reescritura nunca detectará ni procesará reglas circulares.

Es necesario tener permiso de definición de reglas en una clase para poder definir una regla en él. Se debe utilizar el comando GRANT y REVOKE para modificar estos permisos.

El objeto en una regla SQL no puede ser una referencia a un arreglo y no puede tener parámetros.

Aparte del campo "oid", los atributos del sistema no pueden ser referenciados en ningún lugar de la regla. Entre otras cosas esto significa que las funciones de instancias (por ejemplo, foo(emp) donde emp es una clase) no pueden ser llamadas en ningún lugar dentro de una regla.

El sistema almacena el texto de la regla y los planes de consulta como atributos de texto. Esto implica que la creación de reglas puede fallar si la regla más sus varias internas representaciones exceden algún valor que es del orden de una página.

3. Preparación del ambiente de trabajo

Para poder aplicar los conceptos descritos en este laboratorio es necesario tener una base de datos en la cual aplicar las restricciones que requiere el proyecto de trabajo.

Creación de tablas

Las tablas que en esta sección encuentra se crearon aplicando las reglas de conversión del modelo E-R al relacional al diagrama E-R de la sección 1. Este laboratorio no intenta explicar esas reglas.

Esquemas para el diagrama E-R de la Universidad ACME:

Los nombres de los campos en algunos casos fueron cambiados, con respecto del diagrama E-R, por motivos de tamaños del nombre, sin embargo los conceptos son los mismos.

CuentaCheques(ncuenta, saldo, banco)

Cheque(ncuenta, cns, total, fecha);

Tabulador(idtab, importehora);

Profesores(idprofe, idtab, nombre, maximo, sueldo);

CursosEspeciales(idcurso, idprofe,cns,fini,ffin);

CursosExtracurricular(idextra, decextra, nhorascurso);

Materias(nmat, des, horacurso);

CEVerano(idcurso, nmat);

CEExtracurricula(idcurso, idextra);

Alumnos(matricula, nombre);

Bimestre(matricula, periodo, nmat, calificacion, faltas);

Faltas(matricula, fecha);

Concepto (idconcepto, desconcepto);

Recibo(folio,matricula, fecharec, totalrec);

DetalleRecibo(folio, cns, idconcepto, subtotal);

CalendarioEscolar(fecha, motivo);

Tablas para el diagrama E-R de la Universidad ACME:

Los siguientes comandos de creación de tablas, inserción de datos y creación de privilegios deben ser ejecutados usando el usuarios postgres (el usuario por omisión) y se debe de cambiar de usuario hasta que explícitamente se le indique. Si durante el proceso de instalación de PostgreSQL, no ha creado un acceso directo para el programa psql, lo puede encontrar en la siguiente dirección: C:\Program Files\PostgreSQL\9.3\bin y construya el acceso directo. Ejecute el programa PSQL del postgreSQL (Shell de postgreSQL) y "copie" cada uno de los siguientes comandos y "péguelo" en el psql.

                -- Creando la base de datos UACME
                    create database uacme;
    
                    -- Cambiarse de la BD por omisión a la ACME (en PSQL)
                    \c UACME
    
                    --Creación de las tablas
                    create table CuentaCheques(
                    ncuenta int,
                    saldo numeric(7,2),
                    banco varchar,
                    primary key(ncuenta)
                    );
    
                    create table Cheque(
                    ncuenta int,
                    cns int,
                    total numeric(10,2),
                    fecha date,
                    foreign key (ncuenta) references CuentaCheques,
                    primary key(ncuenta, cns)
                    );
                    create table Tabulador(
                    idtab int,
                    importehora varchar,
                    primary key(idtab)
                    );
    
                    create table Profesores(
                    idprofe int,
                    idtab int,
                    nombre varchar,
                    maximo varchar,
                    sueldo float, foreign key (idtab) references Tabulador,
                    primary key(idprofe)
                    );
    
                    create table CursosEspeciales(
                    idcurso int,
                    idprofe int,
                    fini varchar,
                    ffin varchar,
                    ncuenta int,
                    cns int,
                    foreign key(idprofe) references Profesores,
                    foreign key(ncuenta, cns) references Cheque,
                    primary key (idcurso)
                    );
    
                    create table CursosExtracurricular(
                    idextra int primary key,
                    decextra text,
                    nhorascurso int
                    );
    
                    create table Materias(
                    nmat int,
                    des varchar,
                    horacurso int,
                    primary key(nmat)
                    );
    
                    create table CEVerano(
                    idcurso int primary key,
                    nmat int,
                    foreign key(nmat) references Materias
                    );
    
                    create table CEExtracurricula(
                    idcurso int primary key,
                    idextra int,
                    foreign key (idextra) references CursosExtracurricular
                    );
    
                    create table Alumnos(
                    matricula int,
                    nombre varchar,
                    primary key(matricula)
                    );
    
                    create table Bimestre(
                    periodo int,
                    matricula int,
                    nmat int,
                    calificacion int,
                    Faltas float,
                    foreign key(nmat) references Materias,
                    foreign key(matricula) references Alumnos,
                    primary key(matricula, periodo)
                    );
    
                    create table Faltas(
                    fecha varchar,
                    matricula int,
                    foreign key(matricula) references Alumnos,
                    primary key(matricula, fecha)
                    );
    
                    create table Concepto(
                    idconcepto int,
                    desconcepto varchar,
                    primary key(idconcepto)
                    );
    
                    create table Recibo(
                    folio int,
                    matricula int,
                    fecharec varchar,
                    totalrec float,
                    foreign key (matricula) references Alumnos,
                    primary key(folio)
                    );
    
                    create table DetalleRecibo(
                    cns int,
                    idconcepto int,
                    folio int,
                    subtotal float,
                    foreign key(idconcepto) references Concepto,
                    foreign key(folio) references Recibo,
                    primary key(folio, cns)
                    );
    
                    create table CalendarioEscolar(
                    fecha varchar primary key,
                    motivo varchar
                    );
                

Inserción de datos para algunas tablas recién construidas.

Los datos insertados sólo sirven para demostrar el funcionamiento de los privilegios de acceso, queda en manos del usuario insertar datos en el resto de las tablas para demostrar que las reglas de acceso son funcionales para cada usuario.

            insert into CuentaCheques values(1,700,'HSBC');
                insert into CuentaCheques values(2,9000,'HSBC');
                insert into CuentaCheques values(3,60,'HSBC');
                insert into CuentaCheques values(4,10,'HSBC');
                insert into CuentaCheques values(5,1000,'HSBC');
                insert into CuentaCheques values(6,200,'HSBC');
    
                insert into Cheque values(1,10,200,'2008-02-01');
                insert into Cheque values(2,10,575.20,'2008-02-01');
                insert into Cheque values(2,20,20,'2008-02-01');
                insert into Cheque values(3,10,600,'2007-02-01');
                insert into Cheque values(4,10,800,'2007-02-01');
                insert into Cheque values(5,10,100,'2007-02-01');
                insert into Cheque values(6,10,300,'2007-02-01');
    
                insert into Tabulador values(10,100);
                insert into Tabulador values(20,200);
                insert into Tabulador values(30,300);
                insert into Tabulador values(40,400);
                insert into Tabulador values(50,500);
                insert into Tabulador values(60,600);
                insert into Tabulador values(70,700);
                insert into Profesores values(1,40,'Roberto','Maestria',15000);
                insert into Profesores values(2,70,'Carlos','Doctorado',25000);
                insert into Profesores values(3,20,'Luis','Licenciatura',6000);
                insert into Profesores values(4,30,'Yunuan','Maestria',12000);
                insert into Profesores values(5,10,'Julio','Licenciatura',4500);
                insert into Profesores values(6,20,'Samuel','Licenciatura',5500);
    
                insert into CursosEspeciales values(1,1,1,20070204,20050204);
                insert into CursosEspeciales values(2,2,2,20070204,20050204);
                insert into CursosEspeciales values(3,3,3,20070204,20050204);
                insert into CursosEspeciales values(4,4,4,20070204,20050204);
                insert into CursosEspeciales values(5,5,5,20070204,20050204);
    
                insert into CursosExtracurricular values(1,'admin',204);
                insert into CursosExtracurricular values(2,'diseño',204);
                insert into CursosExtracurricular values(3,'bdd',204);
                insert into CursosExtracurricular values(4,'java',204);
    
                insert into Materias values(1,'admin bdd',204);
                insert into Materias values(2,'redes',204);
                insert into Materias values(3,'redes 2',204);
                insert into Materias values(4,'admin bdd',204);
                

4. Problemática a resolver

En esta sección ponemos manos a la obra resolviendo el problema plateado inicialmente. En este momento ya tenemos la base de datos creada, hemos insertado datos en algunas tablas y es hora de implementar los conceptos que hemos estudiado en la sección conceptos básicos. Los problemas aquí planteados se han resuelto, por lo que debe de "copiar" el comando SQL y "pegarlo" en el psql.

Administración de usuarios

Resolviendo el problema de la administración de UACME. Se han identificado dos grupos de usuarios en este sistema: Administración y Escolar. Dentro de cada uno de estos grupos encontramos a los usuarios, los que se clasifican así:

Administración:

Jefe del departamento: C. P. Ávila

Auxiliar de Administración: Sr. Cancino


Escolar:

Jefe del departamento: Lic. Barroso

Auxiliar Escolar: Sra. Tirado

Auxiliar Escolar: Sra. Martínez

Auxiliar Escolar: Sra. Aquino

Auxiliar Escolar: Sra. Ramos


Creación de los grupos de usuarios

Se han elegido los nombres de grupos Admin para la DA y Escolar para el DCE.

                -- Creando los grupos de usuarios
                    create group admin;
                    create group escolar;
                

Creación de usuarios del grupo Administración

Se les ha asignado como password el nombre del grupo, pero esto se hace por facilidad, en la práctica cada usuario debe elegir un password personalizado.

            -- Creando los usuarios del grupo administrativo
                create user avila with password 'admin' in group admin;
                create user cancino with password 'admin' in group admin;
                

Creación de usuarios del grupo Escolar

Se les ha asignado como password el nombre del grupo, pero esto se hace por facilidad, en la práctica cada usuario debe elegir un password personalizado.

            -- Creando los usuarios del grupo escolar
                create user barroso with password 'escolar' in group escolar;
                create user tirado with password 'escolar' in group escolar;
                create user martinez with password 'escolar' in group escolar;
                create user aquino with password 'escolar' in group escolar;
                create user ramos with password 'escolar' in group escolar;
                

Otorgamiento de privilegios de acceso sobre las tablas del sistema

Para otorgar privilegios de acceso la junta directiva de UACME ha autorizado el acceso sobre las siguientes tablas para cada departamento:

Tablas a las que se le permite el acceso al grupo Administración

CuentaCheques(ncuenta, saldo, banco)

Cheque(ncuenta, cns, total, fecha);

Tabulador(idtab, importehora);

Profesores(idprofe, idtab, nombre, maximo, sueldo);

Concepto(idconcepto,desconcepto);

Recibo(folio,matricula,fecharec,totalrec);

DetalleRecibo(folio,cns,idconcepto,subtotal);

Como casos especiales este departamento podrá acceder a consultar las tablas de Cursos Especiales, Cursos Especiales Verano, Cursos Especiales Extracurriculares, Cursos Extracurriculares y Materias. Explícitamente no se les permite modificar ningún campo o registro.

Tablas a las que se le permite el acceso al grupo Escolar

CursosEspeciales(idcurso, idprofe,cns,fini,ffin);

CursosExtracurricular(idextra, decextra, nhorascurso);

Materias(nmat, des, horacurso);

CEVerano(idcurso, nmat);

CEExtracurricula(idcurso,idextra);

Alumnos(matricula, nombre);

Bimestre(matricula,periodo,nmat,calificacion,faltas);

Faltas(matricula, fecha);

CalendarioEscolar(fecha, motivo);

Caso especial de profesores para el grupo Escolar

La forma en que evitaremos que el grupo escolar vea el sueldo del docente es creando una vista y asignando privilegios por separado.

            -- Creando la vista, note que no se proyecta el campo sueldo, por lo tanto se esconde de la mirada de los usuarios del grupo escolar. 
    
                CREATE VIEW VistaProfesoresEscolar AS SELECT idprofe,idtab,nombre,maximo FROM Profesores;
                

Otorgando los privilegios en la BD al grupo Administración en el SQL

            -- Todos los privilegios para las tablas del sistema administrativo
                GRANT all ON table Cheque to group admin;
                GRANT all ON table CuentaCheques to group admin;
                GRANT all ON table Tabulador to group admin;
                GRANT all ON table Concepto to group admin;
                GRANT all ON table Recibo to group admin;
                GRANT all ON table DetalleRecibo to group admin;
    
                -- Solo puede consultar y actualizar la tabla de profesores a los usuarios del grupo admin.
                GRANT select, update ON table Profesores to group admin;
    
                -- Solo se permite consultar estas tablas a los usuarios del grupo admin.
                GRANT select ON table CursosExtracurricular to group admin;
                GRANT select ON table CEVerano to group admin;
                GRANT select ON table CEExtracurricula to group admin;
                GRANT select ON table CursosEspeciales to group admin;
                

Otorgando los privilegios en la BD al grupo Escolar en el SQL

            -- Otorgando privilegios sobre las tablas del sistema escolar.
                GRANT all ON table Materias to group escolar;
                GRANT all ON table CursosExtracurricular to group escolar;
                GRANT all ON table CEVerano to group escolar;
                GRANT all ON table CEExtracurricula to group escolar;
                GRANT all ON table CursosEspeciales to group escolar;
                GRANT all ON table Alumnos to group escolar;
                GRANT all ON table Faltas to group escolar;
                GRANT all ON table Bimestre to group escolar;
                GRANT all ON table CalendarioEscolar to group escolar;
                -- Otorgando permisos sobre la vista de profesores
                GRANT all ON table VistaProfesoresEscolar to group escolar;
                

Prueba de los privilegios asignados a los usuarios

Para conectarse a la base de datos con un usuario diferente a postgres (ver Figura 2) busque en el directorio "C:\Program Files\PostgreSQL\9.3\bin" el comando psql e indíquele a cual base de datos se desea conectar (para nuestro caso -d uacme) y el usuario que va a usar (-U barroso), una vez hecho esto PostgreSQL le solicita el password para el usuario barroso y en caso de ser correcto se despliega el shell de la BD. El ejemplo está desarrollado sobre la plataforma Windows. Intente conectarse con los diferentes usuarios que ha creado previamente.

• Conectado a la BD uacme con el usuario barroso

Intente los siguientes comandos:

            Select * from Profesores;
                Select * from VistaProfesoresEscolar;
                Select * from CuentaCheques;
                Select * from Cheque;
                insert into Profesores values(7, 20, 'Jesus', 'Licenciatura', 25000 );
                insert into VistaProfesoresEscolar values(7, 20, 'Jesus', 'Licenciatura', 25000 );
                

Esto nos obliga a atacar el problema con una nueva perspectiva, la creación de reglas, usando la cuenta del usuario postgres ejecute el siguiente comando:

            CREATE or REPLACE RULE insertar_profesores AS ON insert TO VistaProfesoresEscolar
                DO INSTEAD insert into profesores values (
                new.idprofe,
                new.idtab,
                new.nombre,
                new.maximo, 0);
                

Este problema aparece debido a que no se permite insertar registros sobre vistas, entonces lo que tenemos que hacer es redirigir la operación a la tabla profesores usando una regla (la cual es una especie de interrupción) que se dispara cada vez que se intenta ejecutar una inserción de datos sobre la tabla.

Con la cuenta del usuario Barroso intente nuevamente la ejecución del comando:

insert into VistaProfesoresEscolar values(7, 20, 'Jesus', 'Licenciatura');

• Conectado a la BD uacme con el usuario avila, intente los siguientes comandos:

            Select * from Profesores;
                Select * from VistaProfesoresEscolar;
                Select * from CuentaCheques;
                Select * from Cheque;
                update Profesores set sueldo = 6000 where idprofe = 7;
                insert into Profesores values(8, 30, 'Salvador', 'Maestria', 20000 );
                insert into VistaProfesoresEscolar values(8, 30, 'Salvador', 'Maestria');
                

5. Trabajo adicional

Los siguientes problemas no están resueltos, por lo que es necesario aplicar su experiencia adquirida para resolver estos.

1. Usando a los distintos usuarios verifique que se le permitan efectuar los movimientos acordes al privilegio de acceso asignado sobre cada una de las tablas.

2. Construya la regla faltante para el grupo escolar sobre la vista VistaProfesoresEscolar, construya la regla para cuando el usuario barroso desea eliminar el registro del docente Luis.

3. Agregue restricciones adicionales. Use la siguiente política: El encargado de capturar los cursos especiales será el departamento administrativo (cualquier usuario), pero quién asignará el docente será el departamento escolar. Construya la vista y la regla que va a reglamentar esta inserción de datos.

• La inserción de datos a la tabla CursosEspeciales y las tablas especializadas la efectuará el DA, con el campo profesor en nulos o referenciando a un registro especial (por ejemplo, un profesor no válido) de la tabla Profesores.

• La modificación de las tablas CursosEspeciales para asignar al Profesor la efectuará el DCE.

4. Finalmente, explique las causas por las que las instrucciones para los usuarios: barroso y ávila, marcan errores o funcionan adecuadamente.

6. Referencias

• PostgreSQL Introduction and Concepts by Bruce Momjiam

• PostgreSQL by Susan Douglas and Korry Douglas.

• Manual de postgreSQL: www.postgresql.org

• Fundamentos de Base de Datos. 5a. Edición de Abraham Silberschatz. Ed. McGraw-Hill

• Elmasri y Navathe: Fundamentos de Sistemas de Bases de Datos - 3ª edición, 2002.

• Garcia-Molina, Ullman y Widom: "Database systems: the complete book". Prentice-Hall.