diff -uNr kdesdk-3.5.5.orig/umbrello/umbrello/codegenerators/sqlwriter.cpp kdesdk-3.5.5/umbrello/umbrello/codegenerators/sqlwriter.cpp --- kdesdk-3.5.5.orig/umbrello/umbrello/codegenerators/sqlwriter.cpp 2006-07-22 18:11:57.000000000 +1000 +++ kdesdk-3.5.5/umbrello/umbrello/codegenerators/sqlwriter.cpp 2006-11-20 16:42:35.000000000 +1100 @@ -86,14 +86,15 @@ UMLAssociationList aggregations = c->getAggregations(); if( forceSections() || !aggregations.isEmpty() ) { for(UMLAssociation* a = aggregations.first(); a; a = aggregations.next()) { - if( a->getObject(Uml::A)->getID() != c->getID() ) { - - sql << m_indentation << "," << m_endl << m_indentation - << "CONSTRAINT " << a->getName() << " FOREIGN KEY (" - << a->getRoleName(Uml::B) << ") REFERENCES " - << a->getObject(Uml::A)->getName() - << " (" << a->getRoleName(Uml::A) << ")"; - } + if( a->getObject(Uml::A)->getID() == c->getID() && a->getObject(Uml::B)->getID() != c->getID() ) + continue; + if ( a->getRoleName(Uml::B) != "" && a->getRoleName(Uml::B) != "") { + sql << m_indentation << "," << m_endl << m_indentation + << "CONSTRAINT " << a->getName() << " FOREIGN KEY (" + << a->getRoleName(Uml::B) << ") REFERENCES " + << a->getObject(Uml::A)->getName() + << " (" << a->getRoleName(Uml::A) << ")"; + } } }